如何在sqlcommand字符串中创建表?

时间:2016-04-04 05:31:28

标签: sql sql-server tsql

在sqlcommand字符串中创建表,如

"CREATE TABLE '"+txtTableName.Text+"' (ID int IDENTITY(1,1),
ColumnName varchar(255))";

会给你一个错误说

  

“在您指定的任何表名称附近的语法不正确”   文本框'”。

相反,您可以使用

"CREATE TABLE [dbo].['"+txtTableName.Text+"'] (ID int IDENTITY(1,1),
ColumnName varchar(255))";

2 个答案:

答案 0 :(得分:1)

您可以尝试使用像这样的T-SQL

DECLARE @TableName NVARCHAR(100) = 'MyTable'
DECLARE @SQL NVARCHAR(500) = 'CREATE TABLE [dbo].[' + @TableName + '] (ID int IDENTITY(1,1),
ColumnName varchar(255))'

EXEC sp_executesql @SQL

答案 1 :(得分:0)

首先,我会问你为什么要通过进入Textbox来创建SQL表。那里似乎有些不对劲。

但如果你必须......这应该有效:

string sql = "If not exists (select name from sysobjects where name = 
'" + txtTableName.Text + "') CREATE TABLE '" + txtTableName.Text + "'(ID int IDENTITY(1,1),
ColumnName varchar(255))";

using (SqlCommand command = new SqlCommand(sql, con)) {
     command.ExecuteNonQuery(); }

未经测试,这不会考虑根据用户输入文本框的内容而发生的错误,例如单引号(')等字符。

我还建议只创建一个接受@tableName参数的存储过程,然后在服务器端执行直接SQL来处理它。