在SQL表中插入数据时出错

Aja*_*jaz 1 .net c# sql-server ado.net

我试图通过c#代码在(int)和Message(Varchar(MAX))中的列中插入数据(比如反馈),但是它会一直让我烦恼.请帮忙,我很绝望.

表描述:从int,Message Varchar(max)

我正在使用的代码:

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SampleConnectionString"].ConnectionString);
con.open;
string query="insert into Feedback (From,Message) values(@frm,@msg)";
SqlCommand comm = new SqlCommand(query, con);
comm.Parameters.AddWithValue("@frm", Convert.ToInt32(TextBoxid.Text));
comm.Parameters.AddWithValue("@msg",TextBoxFeedBack.text);

comm.ExecuteNonQuery();
con.Close();
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

System.Data.SqlClient.SqlException(0x80131904):关键字"From"附近的语法不正确.在System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection)处于System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔breakConnection)的System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()处于System.Data System.Data.SqlClient.SqlCommand的System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)中的.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj) System.Data.SqlClient.SqlCommand的System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法,DbAsyncResult结果)中的.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async). InternalExecuteNonQuery(DbAsyncResult结果,String methodName,Boolean sendT oPipe)位于_Default.Button1_Click(Object sender,EventArgs e)的System.Data.SqlClient.SqlCommand.ExecuteNonQuery()位于c:\ Users\Ajaz\Documents\Visual Studio 2010\WebSites\WebSite26\Default.aspx.cs:line 29

我猜测有与数据不匹配有关的错误.请帮忙.谢谢

Son*_*nül 6

FROM是TSQL中的保留关键字.你应该像方括号一样使用它[FROM]

string query="insert into Feedback ([From],Message) values(@frm,@msg)";
Run Code Online (Sandbox Code Playgroud)

作为一般推荐,请勿在数据库中使用保留关键字作为标识符和对象名称.

也可以用using声明来处理你的SqlConnection喜欢;

string query = "insert into Feedback ([From],Message) values(@frm,@msg)";
using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["SampleConnectionString"].ConnectionString))
{
  SqlCommand comm = new SqlCommand(query, con);
  comm.Parameters.AddWithValue("@frm", Convert.ToInt32(TextBoxid.Text));
  comm.Parameters.AddWithValue("@msg",TextBoxFeedBack.text);
  con.Open();
  comm.ExecuteNonQuery();
  con.Close();
}
Run Code Online (Sandbox Code Playgroud)