在c#中使用sqlcommand执行查询时出错

时间:2015-07-28 07:59:35

标签: c# visual-studio-2012 web-applications sql-server-2012

这是我的代码:

string createString = "CREATE TABLE user (uid INT PRIMARY KEY IDENTITY(1,1), uname NVARCHAR(30), uemail NVARCHAR(30), upass NVARCHAR(20), ucontact INT(10))"; //YOUR SQL COMMAND TO CREATE A TABLE

SqlConnection connection = new SqlConnection("Data Source=DELL\\SQLEXPRESS;Integrated Security=True;Connect Timeout=1000000;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");

SqlCommand create = new SqlCommand(createString, connection);

connection.Open();
create.ExecuteNonQuery();
connection.Close();

我收到以下错误:

  

关键字“user”

附近的语法不正确      

描述:执行当前Web请求期间发生了未处理的异常。   请查看堆栈跟踪以获取有关错误的更多信息   它起源于代码。

     

异常详细信息:System.Data.SqlClient.SqlException:不正确   关键字'user'附近的语法。

2 个答案:

答案 0 :(得分:5)

user是T-SQL中的reserved keyword。您需要使用方括号,如[user]

作为最佳做法,请将其更改为 - 保留字。

也可以使用using statement自动处理您的连接和命令,而不是手动调用Close方法。

using(var connection = new SqlConnection(connectionString))
using(var create = connection.CreateCommand())
{
     create.CommandText = "...";
     connection.Open();
     create.ExecuteNonQuery();
}

答案 1 :(得分:1)

表名user是预定义的单词,更改表名 或者使用[user]并且列ucontact的数据类型为int,大小为int,不接受大小。那应该是ucontact INT 最终您的查询将如下所示

CREATE TABLE [user] (uid INT PRIMARY KEY IDENTITY(1,1), uname NVARCHAR(30), uemail NVARCHAR(30), upass NVARCHAR(20), ucontact INT)