使用特定路径创建SQL数据库

时间:2016-11-08 07:04:56

标签: sql-server vb.net

我需要创建具有特定路径的SQL数据库 我找到了这段代码:

Dim fullpath As String = TextBox4.Text & TextBox1.Text & "_data.mdf"
Dim fullpath1 As String = TextBox4.Text & TextBox1.Text & "_log.ldf"
Dim ExtLog As String = TextBox1.Text & "_Log"
Dim ExtDat As String = TextBox1.Text & "_Data"
Dim myConn As SqlConnection = New SqlConnection("Server='" & ComboBox8.Text & "';uid='" & TextBox14.Text & "';pwd='" & TextBox13.Text & "';database=master")
Dim str As String = "CREATE DATABASE " & TextBox1.Text & " ON PRIMARY (NAME = " & ExtDat & ",FILENAME = " & fullpath & ", SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%)  LOG ON (NAME = " & ExtLog & ", FILENAME = " & fullpath1 & ", SIZE = 1MB,MAXSIZE = 5MB, FILEGROWTH = 10%) "
Dim myCommand As SqlCommand = New SqlCommand(str, myConn)
Try
    myConn.Open()
    myCommand.ExecuteNonQuery()
    MessageBox.Show("Database is created successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information)
   Catch ex As Exception
        MessageBox.Show(ex.ToString())
   Finally
        If (myConn.State = ConnectionState.Open) Then
           myConn.Close()
        End If
   End Try  

其中:

combobox1= "local", textbox14= "sqlusername", textbox13=
"sqlpassword", textbox1= "newSQL", textbox4= "d:\MyFolder\"

我收到错误说:'d:'附近的语法不正确,标签'd'已经被声明了。标签名称在查询批处理中必须是唯一的。 但是当我使用下面的str时它工作正常:

str = "CREATE DATABASE newSQL ON PRIMARY (NAME = newSQL_Data,FILENAME = 'D:\MyFolder\newSQLData.mdf', SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%)  LOG ON (NAME = newSQL_Log, FILENAME = 'D:\MyFolder\newSQLLog.ldf', SIZE = 1MB,MAXSIZE = 5MB, FILEGROWTH = 10%) "

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

Dim fullpath As String = TextBox4.Text + TextBox1.Text + "_data.mdf"
Dim fullpath1 As String = TextBox4.Text + TextBox1.Text + "_log.ldf"
Dim ExtLog As String = TextBox1.Text + "_Log"
Dim ExtDat As String = TextBox1.Text + "_Data"
Dim myConn As New SqlConnection("Server='" + ComboBox8.Text + "';uid='" + TextBox14.Text + "';pwd='" + TextBox13.Text + "';database=master")
Dim str As String = (Convert.ToString((Convert.ToString((Convert.ToString((Convert.ToString("CREATE DATABASE " + TextBox1.Text + " ON PRIMARY (NAME = ") & ExtDat) + ",FILENAME = ") & fullpath) + ", SIZE = 3MB, MAXSIZE = 10MB, FILEGROWTH = 10%)  LOG ON (NAME = ") & ExtLog) + ", FILENAME = ") & fullpath1) + ", SIZE = 1MB,MAXSIZE = 5MB, FILEGROWTH = 10%) "
Try
    myConn.Open()
    ExecuteSQLStmt(str,TextBox1.Text)
    MessageBox.Show("Database is created successfully", "MyProgram", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
    MessageBox.Show(ex.ToString())
Finally
    If (myConn.State = ConnectionState.Open) Then
        myConn.Close()
    End If
End Try



Private Sub ExecuteSQLStmt(sql As String,mydb As String)
    If myConn.State = ConnectionState.Open Then
        myConn.Close()
    End If
    ConnectionString = "Integrated Security=SSPI;" + "Initial Catalog="+ mydb +"; + "Data Source=localhost;"
    myConn.ConnectionString = ConnectionString
    myConn.Open()
    cmd = New SqlCommand(sql, myConn)
    Try
        cmd.ExecuteNonQuery()
    Catch ae As SqlException
        MessageBox.Show(ae.Message.ToString())
    End Try
End Sub

尝试这是它的工作