【发布时间】:2015-03-16 12:31:04
【问题描述】:
我有以下代码,我在 vb.net 项目中使用它。如果数据库名称中没有空格,这很有效。例如,如果数据库名称是“SampleCompany”,它可以正常工作,但如果数据库名称更改为“Sample Company” 我们在这部分 sql 命令中收到错误:“BEGIN CREATE TABLE” & cn.Database。 我们必须能够处理带/不带空格的数据库名称。
有什么建议可以解决这个问题吗? 谢谢。
cn.Database="Sample Company"
sqlCreate = "IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Cloud_UserSetting' AND TABLE_CATALOG ='" & cn.Database & "') " & _
"BEGIN CREATE TABLE " & cn.Database & ".dbo.Cloud_UserSetting(CloudId int NOT NULL, Name varchar(100) NOT NULL," & _
"Setting varchar(250) NULL " & _
"CONSTRAINT PK_Cloud_UserSetting PRIMARY KEY CLUSTERED(CloudId,Name)) END"
command = New SqlCommand(sqlCreate, cn)
command.ExecuteNonQuery()
【问题讨论】:
-
标识符中不允许有空格,除非它是分隔标识符。 “Sample Company”为 ANSI SQL,或者可能是 [Sample Company] MS 样式。
-
补充一下 Jarlth 所说的,双引号或方括号都可用于将 Microsoft SQL Server 中的标识符括起来。
QUOTED_IDENTIFIER设置必须打开才能使用 ANSI 标准双引号。
标签: sql .net sql-server database vb.net