[英]Extract value from string collection
我有一个这样的字符串集合
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");
像往常一样,我可以将正确的值带到预期的文本框中
我该怎么做才能解决此问题? 请帮我 ..
编辑:
我认为您还有其他问题。 当您应该传递单个字符串时,会将整个StringCollection传递给此方法。 在这种情况下,我认为您不需要使用StringCollection。
就像是:
var singleItem = SC_PurLinr[0];
InsertDEL_Stores(singleItem);
将您的方法更改为:
private void InsertDEL_Stores(string singleItem)
....
cmdPR.Parameters.AddWithValue("@BatchNumber", singleItem.Split(',')[4]);
SC_PurLinr.IndexOf("4")
不会返回我认为您的想法。 它返回int,而不是字符串。
在示例字符串的情况下,找不到“ 4”,并且返回-1。
因此,您的查询是"SELECT BatchNumber FROM DEL_Stores WHERE BatchNumber = -1"
为了检查BatchNumber = -1
数据库将BatchNumber(nvarchar)转换为int,但是不能这样做,这就是为什么您收到此错误的原因。
相反,您应该对StringCollection
进行索引以获得不需要调用IndexOf
方法的元素。
除了Peri的答案。 (已编辑以更正BatchNumber的索引)
如果您尝试访问第四个字符串( StringCollection
是零索引集合类型)。 您将需要执行以下操作。
cmdPR.Parameters.AddWithValue("@BatchNumber", SC_PurLinr[3]);
这将为您提供SC_PurLinr
的第4个值,看起来像是您要查找的批号。
.IndexOf("4")
返回一个int
,而不是一个string
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.