【发布时间】:2014-11-28 17:01:09
【问题描述】:
这是我想用的;
string insertQuery = @"insert into userinfo (UserName, FirstName, LastName,
E-mail, Password, Country)
values ( '" + uname + "', '" + fname +
"','" + lname + "', '" + email + "')";
其中 + 之间的每个变量都是带有值的字符串变量。但是当我运行这个命令时,我得到了一些不正确的语法错误。
这是我得到的新错误;
errorSystem.Data.SqlClient.SqlException (0x80131904):字符串或二进制 数据将被截断。该语句已终止。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常, Boolean breakConnection, Action
1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler、SqlDataReader 数据流、 BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean & dataReady) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior,字符串 resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior、RunBehavior runBehavior、布尔 returnStream、布尔 异步,Int32 超时,任务和任务,布尔 asyncWrite,SqlDataReader ds) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior、runBehavior、布尔返回流、字符串 方法,TaskCompletionSource1 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(对象发送者,EventArgs e) 在 c:\Users\kristhnen.jagambrum\Documents\Visual Studio 中 2012\Projects\Registration\Registration\RegistrationPage.aspx.cs:line 50 ClientConnectionId:6d959e49-5b62-43be-b202-76f7eb1fbd2c
【问题讨论】:
-
SQL Injection alert - 你应该NEVER像你提议的那样将你的SQL语句连接在一起; 总是使用参数化查询来避免SQL注入!!
-
您列出了要插入数据的 6 列,但只有 4 个值。是的,请考虑使用
Parameters来防止 SQL 注入。 -
除了@marc_s 所说的,
E-mail列需要转义,因为这是一个表达式,E减去mail。尝试"E-mail"或[E-mail],但是是的,不要连接字符串以形成 sql! -
首先要注意上述警告,但在短期内,您可以调试代码并查看分配给
insertQuery的值 -
I get some incorrect syntax error根本不是很有用的信息。为什么不将错误文本复制并粘贴到您的帖子中?