Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理Sql server创建表的数据库名称中的空格?_Sql_.net_Sql Server_Database_Vb.net - Fatal编程技术网

如何处理Sql server创建表的数据库名称中的空格?

如何处理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

我有以下代码,并在vb.net项目中使用它。如果数据库名称中没有空格,则此操作非常有效。例如,如果数据库名称为“SampleCompany”,则可以正常工作,但如果数据库名称更改为“SampleCompany” 我们在sql命令的这一部分收到一个错误:“begincreatetable”&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()

使用方括号包含列名和表名


例如:使用:
[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标准兼容,也可以使用双引号:
“表名”
(如果我没有弄错,您需要启用引号的标识符)