如何使用 c# 获取带有 return 参数的数据?
How do I get a Data with a return parameter with c#?
我都有这个常用方法,主要用于从数据库中插入和获取数据。但是现在我遇到了一个问题,当有一个输出值时,我需要创建一个新方法,该方法通过我的数据库查询中的输出变量接受并输出值 return 。听说可以这样用
cmd.Parameters.Add("@new_id", SqlDbType.Int).Direction = ParameterDirection.Output;
但是如何将此代码更改为常用方法。
这是我常用的方法代码。
public DataTable GetDataWithParam(string spName, Dictionary<string, string> parms)
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
foreach (var para in parms)
{
cmd.Parameters.AddWithValue(para.Key, para.Value);
}
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
OpenConnection();
DataSet ds = new DataSet();
da.Fill(ds);
CloseConnection();
return ds.Tables[0];
}
}
catch (Exception ex)
{
ex.Message.ToString();
return null;
}
}
如何修改上面的代码来获取输出变量?非常感谢帮助。同样在数据库查询中,return 值是一个整数。
自从我提出这个问题后几周过去了,我想我会回答这个问题,因为我得到了同事的帮助以找到最佳解决方案。您可能想创建一个新的通用泛型方法,如问题中的方法,但输出结果为 ParameterDirection
。所以这是我的答案。
public int ExecuteNonQueryWithOutputParamInt(string spName, Dictionary<string, string> parms, Dictionary<string, object> oParam = null)
{
string key = null;
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
foreach (var para in parms)
{
cmd.Parameters.AddWithValue(para.Key, para.Value);
}
if (oParam != null)
{
foreach (var p in oParam)
{
cmd.Parameters.AddWithValue(p.Key, p.Value).Direction = ParameterDirection.Output;
key = p.Key;
}
}
this.OpenConnection();
cmd.ExecuteNonQuery();
int returnValue = Convert.ToInt32(cmd.Parameters[key].Value);
this.CloseConnection();
return returnValue;
}
catch (Exception ex)
{
ex.Message.ToString();
return 0;
}
}
希望这对其他人有所帮助。感谢您的协助。
我都有这个常用方法,主要用于从数据库中插入和获取数据。但是现在我遇到了一个问题,当有一个输出值时,我需要创建一个新方法,该方法通过我的数据库查询中的输出变量接受并输出值 return 。听说可以这样用
cmd.Parameters.Add("@new_id", SqlDbType.Int).Direction = ParameterDirection.Output;
但是如何将此代码更改为常用方法。
这是我常用的方法代码。
public DataTable GetDataWithParam(string spName, Dictionary<string, string> parms)
{
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
foreach (var para in parms)
{
cmd.Parameters.AddWithValue(para.Key, para.Value);
}
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
OpenConnection();
DataSet ds = new DataSet();
da.Fill(ds);
CloseConnection();
return ds.Tables[0];
}
}
catch (Exception ex)
{
ex.Message.ToString();
return null;
}
}
如何修改上面的代码来获取输出变量?非常感谢帮助。同样在数据库查询中,return 值是一个整数。
自从我提出这个问题后几周过去了,我想我会回答这个问题,因为我得到了同事的帮助以找到最佳解决方案。您可能想创建一个新的通用泛型方法,如问题中的方法,但输出结果为 ParameterDirection
。所以这是我的答案。
public int ExecuteNonQueryWithOutputParamInt(string spName, Dictionary<string, string> parms, Dictionary<string, object> oParam = null)
{
string key = null;
try
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;
foreach (var para in parms)
{
cmd.Parameters.AddWithValue(para.Key, para.Value);
}
if (oParam != null)
{
foreach (var p in oParam)
{
cmd.Parameters.AddWithValue(p.Key, p.Value).Direction = ParameterDirection.Output;
key = p.Key;
}
}
this.OpenConnection();
cmd.ExecuteNonQuery();
int returnValue = Convert.ToInt32(cmd.Parameters[key].Value);
this.CloseConnection();
return returnValue;
}
catch (Exception ex)
{
ex.Message.ToString();
return 0;
}
}
希望这对其他人有所帮助。感谢您的协助。