我有一个像这样的字符串集合
SetDEL_Stores.Add(DealerCode + "," + ItemIdentityCode.Text + "," + decimal.Parse(Qty.Text) + "," + DateTime.ParseExact(ExpireDate.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture) + "," + BatchNumber.Text);
InsertDEL_Stores(SetDEL_Stores);
将值传递给SetDEL_Stores
(我的字符串集合)后,集合是
"S0010M,AZI002M,3,12/26/2013 12:00:00 AM,VDIQ20"
在这种情况下,我使用此集合中的一个值,作为SQL查询的参数
private void InsertDEL_Stores(StringCollection SC_PurLinr)
{
String strConnString = ConfigurationManager.ConnectionStrings["CBConnectionString"].ConnectionString;
const String strQuery = "SELECT BatchNumber FROM DEL_Stores WHERE BatchNumber = @BatchNumber";
SqlConnection conPR = new SqlConnection(strConnString);
SqlCommand cmdPR = new SqlCommand();
cmdPR.Parameters.AddWithValue("@BatchNumber", SC_PurLinr.IndexOf("4"));
cmdPR.CommandType = CommandType.Text;
cmdPR.CommandText = strQuery;
cmdPR.Connection = conPR;
conPR.Open();
SqlDataReader sdr = cmdPR.ExecuteReader();
while (sdr.Read())
{
TextBox1.Text = sdr["BatchNumber"].ToString();
}
conPR.Close();
conPR.Dispose();
}
执行后我收到错误
将nvarchar值'VDIQ20'转换为数据类型int时转换失败。
它指向
行while (sdr.Read())
但是,如果我像往常一样设置cmdPR.Parameters.AddWithValue("@BatchNumber", "VDIQ20");
这样的参数,我可以将正确的值设置为预期的文本框
我该怎么做才能解决这个问题?请帮帮我..
答案 0 :(得分:3)
编辑:
我认为你还有一些问题。当您传递单个字符串时,您将整个StringCollection传递给此方法。在这种情况下,我认为你不需要使用StringCollection。
类似的东西:
var singleItem = SC_PurLinr[0];
InsertDEL_Stores(singleItem);
将您的方法更改为:
private void InsertDEL_Stores(string singleItem)
....
cmdPR.Parameters.AddWithValue("@BatchNumber", singleItem.Split(',')[4]);
答案 1 :(得分:2)
SC_PurLinr.IndexOf("4")
没有回复我的想法。它返回int,而不是string。
如果是您的示例字符串,则找不到“4”并返回-1。
所以你的查询是
"SELECT BatchNumber FROM DEL_Stores WHERE BatchNumber = -1"
为了检查BatchNumber = -1
数据库是否将BatchNumber(nvarchar)转换为int但它不能,这就是您收到此错误的原因。
相反,您应该将StringCollection
编入索引以获取您不想调用IndexOf
方法的元素。
答案 2 :(得分:2)
除了Peri的回答。 (编辑以更正BatchNumber的索引)
如果您尝试访问第4个字符串(StringCollection
是零索引集合类型)。你需要做这样的事情。
cmdPR.Parameters.AddWithValue("@BatchNumber", SC_PurLinr[3]);
这将为您提供SC_PurLinr
的第4个值,它看起来像是您要查找的批号。
答案 3 :(得分:0)
.IndexOf("4")
会返回int
,而不是string
。