C# 数据库插入错误:";字符串或二进制数据将被截断;

C# 数据库插入错误:";字符串或二进制数据将被截断;,c#,asp.net,sql-server,ado.net,C#,Asp.net,Sql Server,Ado.net,当我登录时,我正在会话中存储我的用户名。我的要求是,我想在我的数据库中存储我的用户名。在这里,我将它存储在username1中。输入用户名后,我可以使用response.write()打印它,打印效果非常好。但是,当我将其存储在数据库中时,会产生以下错误: **sqlException was unhandled by user code and exception at cmd.ExecuteScalar(); String or binary data would be trun

当我登录时,我正在会话中存储我的用户名。我的要求是,我想在我的数据库中存储我的用户名。在这里,我将它存储在
username1
中。输入用户名后,我可以使用
response.write()
打印它,打印效果非常好。但是,当我将其存储在数据库中时,会产生以下错误:

**sqlException was unhandled by user code and exception at cmd.ExecuteScalar(); String or binary data would be truncated. The statement has been terminated.**
我建议您使用参数化查询。您的代码现在易受SQL注入攻击。此外,在向数据库插入值时,还应使用SQL命令上的
ExecuteNonQuery
方法,而不是
ExecuteScalar

var connectionString = "Data Source=.;database=testdb1;Integrated Security=SSPI";
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = con.CreateCommand())
{
    con.Open();
    cmd.CommandText = "INSERT INTO qry_details VALUES (@query_name, 'pending for approval', @query_description, @date, @qry, @username)";
    cmd.Parameters.AddWithValue("@query_name", txt_query_name.Text);
    cmd.Parameters.AddWithValue("@query_description", txt_query_description.Text);
    cmd.Parameters.AddWithValue("@date", DateTime.Now);
    cmd.Parameters.AddWithValue("@qry", qry);
    cmd.Parameters.AddWithValue("@username", uname1);
    cmd.ExecuteNonQuery();
}

检查qry_details表的长度,看它是否小于发送给db的字符串


基本上,异常表示您正在尝试输入大于列长度的内容。

此错误通常发生在插入值大于SQL Server上表中定义的字段宽度时


检查是否使用DateTime插入日期和时间。现在,您的表必须是DateTime类型。不只是日期或时间

字符串uname 1=(字符串)会话[“fname”].ToString()+“”+会话[“lname”].ToString();但是“字符串或二进制数据将被截断”错误怎么办?然后同样的异常也会出现。异常是字符串或二进制数据将被截断。该语句已终止。它在cmd.ExecuteNonQuery()处给出;但是,如果直接指定字符串值,它将像uname=“srihari”一样插入;如果iam使用会话插入,它将给出exceptioni指定的uname值50length@srihari,那么
uname.Length
的值是多少?您试图在其中插入用户名的列的数据类型是什么?
uname
中存储的值长于此列的长度。@srihari:您需要检查表架构、数据类型和查询,如
INSERT-INTO-table_-name(column1,column2,column3,…)值(@value1,@value2,@value3,…)您可能面临列错配问题,我是唯一尝试分析注射风险的人?
var connectionString = "Data Source=.;database=testdb1;Integrated Security=SSPI";
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = con.CreateCommand())
{
    con.Open();
    cmd.CommandText = "INSERT INTO qry_details VALUES (@query_name, 'pending for approval', @query_description, @date, @qry, @username)";
    cmd.Parameters.AddWithValue("@query_name", txt_query_name.Text);
    cmd.Parameters.AddWithValue("@query_description", txt_query_description.Text);
    cmd.Parameters.AddWithValue("@date", DateTime.Now);
    cmd.Parameters.AddWithValue("@qry", qry);
    cmd.Parameters.AddWithValue("@username", uname1);
    cmd.ExecuteNonQuery();
}