我编写这个函数是为了返回一个数据集,我希望返回一个较小的数据集,因为我只希望返回一个值,但是我得到了一个相当臃肿的对象,我找不到我要找的值,这会导致问题,因为我打算大量使用这个函数。
我希望有人能发现我做错了什么,我已经包括了代码,返回对象的截图和我所期待的。任何帮助都将不胜感激。
如果我在这个问题上的措辞不正确,请随时告诉我,我很难很好地表达我的想法。
public DataSet getPartnerParameter(string parameter)
{
using (var dbConnection = new SqlConnection(UnityHelper.IocContainer.Resolve<IConfigHelperService>().GetConnectionString("CASConnectionString")))
{
dbConnection.Open();
using (var dbCommand = new SqlCommand("GETPARTNERPARAMETER"))
{
dbCommand.CommandType = CommandType.StoredProcedure;
dbCommand.Connection = dbConnection;
SqlParameter lstrParameter = new SqlParameter("@Parameter", SqlDbType.VarChar);
lstrParameter.Value = parameter;
dbCommand.Parameters.Add(lstrParameter);
var ldaDPS = new SqlDataAdapter(dbCommand);
var ldstParameterValues = new DataSet();
ldaDPS.Fill(ldstParameterValues);
return ldstParameterValues;
}
}
}
这就是我所期待的
编辑//
稍微修改了我的代码,但仍然不起作用。
public String[] getPartnerParameter(string parameter)
{
using (var dbConnection = new SqlConnection(UnityHelper.IocContainer.Resolve<IConfigHelperService>().GetConnectionString("CASConnectionString")))
{
dbConnection.Open();
SqlCommand dbCommand = new SqlCommand("GETPARTNERPARAMETER", dbConnection);
dbCommand.CommandType = CommandType.StoredProcedure;
SqlParameter lstrParameter = new SqlParameter("@Parameter", SqlDbType.VarChar);
lstrParameter.Value = parameter;
dbCommand.Parameters.Add(lstrParameter);
SqlDataReader reader = dbCommand.ExecuteReader();
string[] results = new string[2];
while (reader.Read())
{
results[0] = reader[0].ToString();
results[1] = reader[1].ToString();
}
if (results.Length < 1)
{
results[0] = "Cannot find Value";
results[1] = "S";
return results;
}
else
{
return results;
}
}
错误是这样的:{“过程或函数‘getpartnerparameter’需要参数'@parameter',但没有提供。”}
2条答案
按热度按时间ryevplcw1#
您要查找的值可能在dataset.tables[0].rows[0]行中。
但是,如果您希望返回一行,那么dataset对象似乎有点过分了。我建议避免使用sqldataadapter/dataset,而是使用sqldatareader。
未经测试的代码,但应提供如何使用它的要点:
ymzxtsji2#
一
DataSet
是一个可以包含许多表的对象。它不需要,但它可以,因此它还有许多字段、属性和方法来支持这个角色。对于此查询,请参阅
ldstParameterValues.Tables[0].Rows[0]
. 在该行中,您还可以看到具有另一级别括号索引的列:但是,这些结果的类型是object。您需要强制转换这些值或使用
GetX()
方法来获取具有有意义类型的结果。