在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))";
答案 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来处理它。