C# 带有存储过程的查询返回空
运行下面的查询成功显示返回的结果C# 带有存储过程的查询返回空,c#,sql,odbc,sybase,C#,Sql,Odbc,Sybase,运行下面的查询成功显示返回的结果 sp_wts_lst_mod_amp_mtx 'xxxx', '062306', 'LS-I', 'EA', null 所以我正确地将相同的值作为参数传递给下面的方法,但它返回空值。reader.Read()为false 我的方法有什么问题 public static List<string> GetMatrices(object userMarketId, string userMarketLabelId, string model, strin
sp_wts_lst_mod_amp_mtx 'xxxx', '062306', 'LS-I', 'EA', null
所以我正确地将相同的值作为参数传递给下面的方法,但它返回空值。reader.Read()为false
我的方法有什么问题
public static List<string> GetMatrices(object userMarketId, string userMarketLabelId, string model, string amp)
{
var matrices = new List<string>();
var connection = new OdbcConnection();
try
{
using (connection = clsWTSCommon.GetDBConnection(userMarketId, null))
using (var command = connection.CreateCommand())
{
command.CommandText = "{CALL " + StoreProcedures.SpWtsLstModAmpMtx + " (?,?,?,?,?)}";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@ctl_mkt_id", OdbcType.NVarChar, 10).Value = userMarketId.ToString();
command.Parameters.Add("@ctl_mkt_lbl_id", OdbcType.NVarChar, 10).Value = userMarketLabelId;
command.Parameters.Add("@model_code", OdbcType.NVarChar, 16).Value = model;
command.Parameters.Add("@amp_code", OdbcType.NVarChar, 3).Value = amp;
command.Parameters.Add("@language_id", OdbcType.NVarChar, 3).Value = null;
if (connection.State == ConnectionState.Open)
{
var reader = command.ExecuteReader();
while (reader.Read())
{
matrices.Add(reader.GetString(reader.GetOrdinal("sspl")) + "/" +
reader.GetString(reader.GetOrdinal("peak_gain")));
}
}
}
}
catch (Exception ex)
{
clsDataAccess.ShowInfo(ex.Message);
}
finally
{
connection.Close();
connection.Dispose();
}
return matrices;
}
公共静态列表getMatrix(对象userMarketId、字符串userMarketLabelId、字符串模型、字符串amp)
{
变量矩阵=新列表();
var连接=新的OdbcConnection();
尝试
{
使用(connection=clsWTSCommon.GetDBConnection(userMarketId,null))
使用(var command=connection.CreateCommand())
{
command.CommandText=“{CALL”+StoreProcedures.SpWtsLstModAmpMtx+”(?、?、?、?、?)}”;
command.CommandType=CommandType.storedProcess;
Add(“@ctl\u mkt\u id”,OdbcType.NVarChar,10).Value=userMarketId.ToString();
Add(“@ctl\u mkt\u lbl\u id”,OdbcType.NVarChar,10)。Value=userMarketLabelId;
command.Parameters.Add(“@model_code”,OdbcType.NVarChar,16)。Value=model;
command.Parameters.Add(“@amp_code”,OdbcType.NVarChar,3)。Value=amp;
command.Parameters.Add(“@language_id”,OdbcType.NVarChar,3)。Value=null;
if(connection.State==ConnectionState.Open)
{
var reader=command.ExecuteReader();
while(reader.Read())
{
Add(reader.GetString(reader.GetOrdinal(“sspl”))+“/”+
reader.GetString(reader.GetOrdinal(“峰值增益”));
}
}
}
}
捕获(例外情况除外)
{
clsDataAccess.ShowInfo(例如Message);
}
最后
{
connection.Close();
connection.Dispose();
}
返回矩阵;
}
此行:
command.CommandText = "{CALL " + StoreProcedures.SpWtsLstModAmpMtx + " (?,?,?,?,?)}";
应该是:
command.CommandText = StoreProcedures.SpWtsLstModAmpMtx;
干杯-尝试使用
reader[“columnName”]
而不是reader.GetString(reader.GetOrdinal(“column”)
。我认为这不是你问题的解决办法,但可能会有帮助。像这样,@dburner reader.Read()为false,所以前面提到的行还不能工作。没有任何返回值来尝试您的建议。实际上不是真的。该行应为:command.CommandText=StoreProcedures.SpWtsLstModAmpMtx代码>其余部分不需要。谢谢Chris;我不确定,所以没说。