【问题标题】:SQL syntax error -SQL 语法错误 -
【发布时间】:2015-01-31 00:29:13
【问题描述】:

我正在尝试执行此查询,但一直收到此错误;

errorSystem.Data.SqlClient.SqlException (0x80131904):关键字“用户”附近的语法不正确。在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) 在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) 在 System.Data.SqlClient System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) 在 System.Data.SqlClient。 System.Data.SqlClient.SqlCommand.RunExecuteReader 上的 SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async,Int32 超时,Task& 任务,Boolean asyncWrite,SqlDataReader ds)(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String 方法, 任务完成源1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1完成,字符串方法名,布尔 sendToPipe,Int32 超时,布尔 asyncWrite) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 Registration.RegistrationPage.Button1_Click1(Object sender, EventArgs e) 在 c:\Users\kristhnen.jagambrum\Documents \Visual Studio 2012\Projects\Registration\Registration\RegistrationPage.aspx.cs:line 52 ClientConnectionId:8c00c1af-b9a7-477b-881f-f849a8c0d0ec

我尝试执行的查询是;

SqlConnection conn = new  SqlConnection(ConfigurationManager.ConnectionStrings["userinfo.ConnectionString"].ConnectionString);
conn.Open();
// string uname = usernametextbox.Text;
// string fname = fnametextbox.Text;
// string lname = lnametextbox.Text;
// string email = emailtextbox.Text;
// string ppassword = passwordtextbox.Text;
// string ccountry = DropDownListcountry.SelectedItem.Text;

string insertQuery = "INSERT INTO user (UserName, FirstName, LastName, Email, Password, Country) VALUES (@uname, @fname, @lname, @email, @password, @country)";

SqlCommand comm = new SqlCommand(insertQuery, conn);
//int temp = Convert.ToInt32(comm.ExecuteScalar().ToString());
comm.Parameters.AddWithValue("@uname", usernametextbox.Text);
comm.Parameters.AddWithValue("@fname", fnametextbox.Text);
comm.Parameters.AddWithValue("@lname", lnametextbox.Text);
comm.Parameters.AddWithValue("@email", emailtextbox.Text);
comm.Parameters.AddWithValue("@country", DropDownListcountry.ToString());
comm.Parameters.AddWithValue("@password", passwordtextbox.Text);

comm.ExecuteNonQuery();
// Response.Redirect("manager.aspx");

conn.Close();

【问题讨论】:

  • user 一个关键字,如果是这样的话,将表名包裹在 [] "INSERT INTO [user] (UserName, FirstName, LastName, Email, Password, Country) VALUES (@uname, @fname, @lname, @email, @password, @country)";

标签: c# sql sql-server syntax


【解决方案1】:

如果是这样的话,用户是否是关键字,将表名包裹在 [] 周围

"INSERT INTO [user] (UserName, FirstName, LastName, Email, Password, Country)
             VALUES (@uname, @fname, @lname, @email, @password, @country)";

或者你也可以使用这种风格

"INSERT INTO [dbo].[user] (UserName, FirstName, LastName, Email, Password, Country) 
    VALUES (@uname, @fname, @lname, @email, @password, @country)";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-22
    • 2015-04-04
    • 2016-12-13
    相关资源
    最近更新 更多