【问题标题】:Establishing a new SQL Connection after creating a database in a server在服务器中创建数据库后建立新的 SQL 连接
【发布时间】:2017-03-13 14:13:41
【问题描述】:

请原谅我的英语语法。

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

这是连接字符串:

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))"

【问题讨论】:

  • 运行建表命令时没有报错?
  • @KobyDouek 是的,没有错误我还在 MSSQL 的查询编辑器中检查过。以防万一,我将添加我的创建表查询。

标签: sql-server database vb.net


【解决方案1】:

我这样做的方法是在 CREATE TABLE 之前添加一个 USE 语句。所以 CREATE TABLE 命令看起来像这样:

"USE  " & dbName & ";
GO

CREATE TABLE ..."

编辑:正如 cmets 中所指出的,GO 分隔符不能在 .NET SQL 命令中使用。

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

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

或者使用允许使用 GO 分隔符的 SMO。该技术在this question 的已接受答案中有详细描述。

【讨论】:

  • 由于 OP 通过 sql 命令执行所有操作,因此 GO 关键字在这里不起作用。这是 SSMS 中的默认批处理分隔符,而不是 sql 命令。但是,您可以使用三部分命名来创建新表。
  • @SeanLange 什么是“三部分命名”来创建表,我在哪里可以找到有关它的信息?
  • 在这种情况下,它将是 "Create " + dbname + ".dbo.tblPerson..." 这样你就可以声明你想在给定的数据库和模式中创建表。只要它们在同一台服务器上,这是完全有效的。
  • 感谢 Sean,已经有一段时间了,我忘记了您不能在 SQL 命令中使用 GO 分隔符。正如您所提到的,三部分命名将起作用,SMO 也应如此,如此处广泛描述:stackoverflow.com/questions/40814/…
猜你喜欢
  • 2017-11-01
  • 2016-08-25
  • 2012-03-07
  • 2017-02-09
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 2021-06-01
  • 2011-01-26
相关资源
最近更新 更多