将变量传递给存储过程,c#

时间:2011-06-15 11:23:13

标签: c# asp.net variables stored-procedures parameter-passing

我有一个变量“按键”,在我们的系统拨打电话时会设置。它写入文本文件的方式如下:

w.Write(attrColl["keypress"].Value);

我需要做的是将这些按键传递到sproc。

所以,我的第一个问题是如何将它传递给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?或者处理#。

的最佳方法是什么

感谢任何想法,建议或文档。

1 个答案:

答案 0 :(得分:3)

我假设你的文本文件看起来像这样,都在一行上。

  

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();
    ...
    }
}