【发布时间】:2012-08-20 21:51:06
【问题描述】:
我正在 C# Web 应用程序中构建输入表单。我可以很好地提交它,但我收到System.Data.SqlClient.SqlException (0x80131904): String or binary data would be truncated 错误。我知道这是一个长度问题,但我仔细检查了所有内容,但似乎无法在这里弄清楚。
{
// Open Connection
thisConnection.Open();
// Create INSERT statement with named parameters
nonqueryCommand.CommandText = "INSERT INTO InventoryInput (Date, Item, Qty, WStatus) VALUES (@Date, @Qty, @Item, @WStatus)";
// Add Parameters to Command Parameters collection
nonqueryCommand.Parameters.Add("@Date", System.Data.SqlDbType.DateTime);
nonqueryCommand.Parameters.Add("@Item", System.Data.SqlDbType.VarChar, 255);
nonqueryCommand.Parameters.Add("@QTY", System.Data.SqlDbType.NChar, 10);
nonqueryCommand.Parameters.Add("@WStatus", System.Data.SqlDbType.VarChar, 50);
nonqueryCommand.Parameters["@Date"].Value = TextBox1.Text;
nonqueryCommand.Parameters["@Item"].Value = DropDownList1.Text;
nonqueryCommand.Parameters["@QTY"].Value = TextBox2.Text;
nonqueryCommand.Parameters["@WStatus"].Value = DropDownList3.Text;
nonqueryCommand.ExecuteNonQuery();
}
【问题讨论】:
-
(1) ID 是否自动递增? (2) 我相信你有一个错字。注意
@Qty和@QTY。 AFAIK 它区分大小写。 -
那么,
DropDownList1.Text和TextBox2.Text的长度是多少?和DropDownList3.Text?第一个 (TextBox1,Text) 更有趣。就个人而言,我认为您应该先进行显式解析,然后给它 DateTime,而不是字符串 -
同样,您也不应该将数量保存为字符串 - 使用整数数据类型
-
@Andre 区分大小写取决于数据库设置和主数据库设置
-
@MarcGravell 确实,谢谢 Marc。
标签: c# sql-server