将变量传递给存储过程,c#
Posted
技术标签:
【中文标题】将变量传递给存储过程,c#【英文标题】:passing variable to a stored procedure, 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 端的 #,那会很好用。我在想也许是一个数组。 【参考方案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。 如果哈希是保证分隔符,您需要讨论添加按键的模式。回到原来的问题并添加更多细节。以上是关于将变量传递给存储过程,c#的主要内容,如果未能解决你的问题,请参考以下文章
在 azure synapse 存储过程中将表名作为参数传递时将查询结果分配给变量