如何处理Sql server创建表的数据库名称中的空格?
我有以下代码,并在vb.net项目中使用它。如果数据库名称中没有空格,则此操作非常有效。例如,如果数据库名称为“SampleCompany”,则可以正常工作,但如果数据库名称更改为“SampleCompany” 我们在sql命令的这一部分收到一个错误:“begincreatetable”&cn.Database。 我们必须能够处理带有/不带空格的数据库名称 有什么解决这个问题的建议吗? 多谢各位如何处理Sql server创建表的数据库名称中的空格?,sql,.net,sql-server,database,vb.net,Sql,.net,Sql Server,Database,Vb.net,我有以下代码,并在vb.net项目中使用它。如果数据库名称中没有空格,则此操作非常有效。例如,如果数据库名称为“SampleCompany”,则可以正常工作,但如果数据库名称更改为“SampleCompany” 我们在sql命令的这一部分收到一个错误:“begincreatetable”&cn.Database。 我们必须能够处理带有/不带空格的数据库名称 有什么解决这个问题的建议吗? 多谢各位 cn.Database="Sample Company" sqlCreate = "IF NOT
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()
使用方括号包含列名和表名
例如:使用:
[table name]
而不是表名,您只需在数据库名中使用方括号,如下所示:
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()
标识符中不允许使用空格,除非它是分隔标识符。“样本公司”是ANSI SQL,或者可能是[样本公司]MS风格。为了补充Jarlth所说的内容,可以使用双引号或方括号将标识符括在Microsoft SQL Server中。必须打开QUOTED\u标识符设置才能使用ANSI标准双引号。工作正常,谢谢you@User1162527:或者,如果您希望与SQL标准兼容,也可以使用双引号:“表名”
(如果我没有弄错,您需要启用引号的标识符)