Comment créer une base de données SQL Server avec le code VB.NET
-
21-12-2019 - |
Question
J'utilise VB 2012 et SQL Server 2012 localdb
Je veux créer un fichier de base de données (.mdf
) dans mon dossier C:\AppData
par exemple.Nom du fichier DB 0105.mdf
et journal Nom du fichier 0105.ldf
Quelqu'un peut-il me dire la procédure?
Je peux me connecter à SQL Server 2012 localDB à l'aide de la chaîne de connexion
Data Source=(LocalDB)\v11.0;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30
La solution 2
Merci Steve Pettifer
Voici le code final qui a fonctionné
Dim Conn As New SqlConnection("Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True")
Using Conn
Conn.Open()
Dim cmd As SqlCommand = Conn.CreateCommand
Dim str As String = "CREATE Database {0} ON (Name= N'{0}', FileName='{1}\{0}.mdf')"
cmd.CommandText = String.Format(str, T2.Text, T1.Text)
cmd.ExecuteNonQuery()
End Using
T1.Text: Emplacement du dossier T2.text: nom de fichier sans extension
Autres conseils
Utilisez SQLCOMMAND.EXCUTENONQUERY
Imports System.Data.SqlClient
Dim queryString As String = "CREATE DATABASE [0105] ON PRIMARY (NAME = N'0105', FILENAME = N'C:\APPDATA\Pluto_Data.MDF' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) " & _
"LOG ON (NAME = N'0105_Log', FILENAME = N'C:\APPDATA\0105_Log.LDF' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )"
Using connection As New SqlConnection(queryString)
Dim command As New SqlCommand(queryString, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
Juste changer les bits dont vous avez besoin pour changer ci-dessus comme le groupe de fichiers, la croissance des fichiers et les tailles initiales, etc. Je pense que cela fonctionnera bien que je n'ai pas de localDb à la main pour l'essayer, je peux donc être un morceau de route.
EDIT: J'étais hors du parcours et trop libre et facile avec le T-SQL.
Essayez cela à la place, du lien que j'ai ajouté dans un commentaire ci-dessous.
Public Function CreateDatabase(ByVal dbName As String, ByVal dbFileName As String) As Boolean
Try
Dim connectionString As String = String.Format("Data Source=(LocalDB)\v11.0;Initial Catalog=master;Integrated Security=True")
Using connection As New SqlConnection(connectionString))
connection.Open()
Dim cmd As SqlCommand = connection.CreateCommand()
DetachDatabase(dbName)
cmd.CommandText = String.Format("CREATE DATABASE {0} ON (NAME = N'{0}', FILENAME = '{1}')", dbName, dbFileName)
cmd.ExecuteNonQuery()
End Using
If (My.Computer.FileSystem.FileExists(dbFileName)) Then
Return True
Else
Return False
End If
Catch
Throw
End Try
End Function