问题描述
我有一个变量“ keypress \”,当我们的系统中拨打电话时会设置该变量。将其写入文本文件的方式如下:
w.Write(attrColl[\"keypress\"].Value);
我需要做的是将这些按键传入存储过程中。
因此,我的第一个问题是如何将其传递给sproc,我的代码如下所示:
mySqlCommand.Parameters.Add(\"@Q1\",SqlDbType.Int).Value = keypress;
mySqlCommand.Parameters.Add(\"@Q2\",SqlDbType.Int).Value = keypress;
例如:如果第一个按键是500#,第二个按键是300#。
它应该看起来像@ Q1 = 500#和@ Q2 = 300#
我需要先将按键转换为字符串吗?如果是这样,什么是最好的方法,因为我给出了大约10个问题,所以我会返回10个独特的按键。
其次,由于每次按键末尾都有一个#号,因此sproc输入是否为nvarchar而不是int?或处理#的最佳方法是什么。
任何想法,建议或文档,我们将不胜感激。
解决方法
我假设您的文本文件看起来像这样,都在一行上。
100#400#900#
我还假设您已经将此行读回到某个名称的变量中。
所以
var keypressline = \"100#400#900#\";
var keyPresses = keypressline.Split(\'#\');
for (var i = 0; i < keyPresses.Length; i++)
{
mySqlCommand.Parameters.AddWithValue(\"@Q\" + i,keyPresses[i]);
}
我故意将@Q留为字符串。如果强制转换为整数,则首先按下0将丢失该事实。
编辑:包含的加载文件代码
string fullPathAndFileName = @\"C:\\blah\\blah.txt\";
string keypresses;
using (StreamReader sr = new StreamReader(fullPathAndFileName))
{
while (sr.Peek() >= 0)
{
keyPresses = sr.ReadLine();
...
}
}