2014-12-02 114 views
1

我试图执行此查询,但不断收到此错误;SQL语法错误 -

errorSystem.Data.SqlClient.SqlException(0x80131904):关键字'用户'附近的语法不正确。 System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,动作1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction)在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔callerHasConnectionLock,布尔asyncClose)在System.Data.SqlClient.TdsParser在System.Data.SqlClient.SqlCommand上的System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)上的.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,布尔& dataReady) .RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,布尔异步,Int32超时,任务&任务,布尔asyncWrite,SqlDataReader ds)在System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,String方法,TaskCompletionSource 1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource在完成,字符串methodName,布尔sendToPipe,Int32超时,布尔asyncWrite)在System.Data.SqlClient.SqlCommand.ExecuteNonQuery()在Registration.RegistrationPage.Button1_Click1(对象发件人,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(); 
+4

是表名'user'一个关键的词,如果所以将表名包装在'[]' ''INSERT INTO [user](UserName,FirstName,LastName,Email,Password,Country)VALUES(@uname,@fname,@lname,@email,@password,@country )“;' – MethodMan 2014-12-02 17:01:20

回答

2

是用户的一个关键的字,如果这样环绕[]

"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)";