【问题标题】:passing variable to a stored procedure, c#将变量传递给存储过程,c#
【发布时间】:2011-09-15 11:06:16
【问题描述】:

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

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

我需要做的是在这些按键进入时将它们传递给存储过程。

所以,我的第一个问题是如何将它传递给存储过程,我的代码如下所示:

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?或者处理 # 的最佳方式是什么。

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

【问题讨论】:

  • 桌子长什么样?
  • 该表正在寻找 Int,它有大约 20 列,因此剩余的空白位置将为空。如果我可以去掉 aspx 端的 #,那会很好用。我在想也许是一个数组。

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


【解决方案1】:

我假设您的文本文件看起来有点像这样,都在一行中。

100#400#900#

我还假设您已将这一行读回到 somename 的变量中。

所以

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

【讨论】:

  • 这是有道理的,而且很棒,但我仍然对这种方法有一些问题。并非所有按键都以# 结尾,大多数都以# 结尾,但不是全部。目前按键行被发送到文本文件并组装在文本文件中,而不是 aspx。
  • 如果哈希是保证分隔符,您需要讨论添加按键的模式。回到原来的问题并添加更多细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多