Sql server 在服务器中创建数据库后建立新的SQL连接

Sql server 在服务器中创建数据库后建立新的SQL连接,sql-server,database,vb.net,Sql Server,Database,Vb.net,请原谅我的英语语法 我目前正在编写一个系统,我想知道在服务器中创建数据库后是否可以建立新的连接 这是连接字符串: Dim DBCon As SqlConnection = New SQLConnection("Data Source=(localdb)\DbLocal;Integrated Security=True") 如果我想创建一个数据库,我会使用一个命令-数据库名称在一个文本框后绑定,如下所示: Dim dbName As String = txtdbName.Text myComma

请原谅我的英语语法

我目前正在编写一个系统,我想知道在服务器中创建数据库后是否可以建立新的连接

这是连接字符串:

Dim DBCon As SqlConnection = New SQLConnection("Data Source=(localdb)\DbLocal;Integrated Security=True")
如果我想创建一个数据库,我会使用一个命令-数据库名称在一个文本框后绑定,如下所示:

Dim dbName As String = txtdbName.Text
myCommand = "CREATE database " & dbName
创建数据库,但在启动创建表的查询后,表不会保存在创建的数据库中。因此,根据我在VB.Net和MSSQL中的初学者技能,我推断这是因为我的连接字符串,所以我尝试使用它:

Dim myConnectionString As SqlConnection = New SqlConnection("Data Source=(localdb)\DbLocal;Database=" & dbName & ";Integrated Security=True;Pooling=False")
我在创建表查询之前编写了上述代码,但在运行它之后,我在查询中创建的表没有进入数据库。我想知道是否有一个“正确”的方法来做到这一点。我尝试混合我在网上找到的不同代码,但它们产生相同的结果

编辑:我的创建表查询:

myCommand = "CREATE TABLE tblPerson (PersonID int, LastName varchar(300), FirstName varchar(300), Address varchar(300), City varchar(300))"

这样做的方法是在CREATE表之前添加一个USE语句。因此,CREATE TABLE命令如下所示:

"USE  " & dbName & ";
GO

CREATE TABLE ..."
"CREATE TABLE   " & dbName & ".dbo.MyTable ( ..."
编辑:正如注释中指出的,GO分隔符不能在.NET SQL命令中使用

相反,可以使用三部分命名来指定数据库,如下所示:

"USE  " & dbName & ";
GO

CREATE TABLE ..."
"CREATE TABLE   " & dbName & ".dbo.MyTable ( ..."

或者使用SMO,它允许使用GO分隔符。此技术在对的公认答案中有详细描述。

当您运行表创建命令时,没有错误?@KobyDouek是的,没有错误我也在MSSQL的查询编辑器中检查过。我将添加我的CREATETABLE查询以防万一。由于OP是通过sql命令执行所有操作的,GO关键字在这里不起作用。这是SSMS中的默认批处理分隔符,而不是sql命令。但是,您可以使用三部分命名来创建新表。@SeanLange什么是“三部分命名”来创建表,在哪里可以找到有关它的信息?在这种情况下,可以使用“create”+dbname+“.dbo.tblPerson…”这样您就可以声明要在给定的数据库和架构中创建表。只要它们在同一台服务器上,这是完全有效的。谢谢Sean,这已经有一段时间了,我忘了你不能在SQL命令中使用GO分隔符。正如您所提到的,由三部分组成的命名将起作用,SMO也应该起作用,如下所述: