如何将C#中in属性的参数传递给sqlserver。 我必须执行一个存储过程,该过程需要属性中的参数。请让我知道我该怎么做.....
答案 0 :(得分:2)
执行存储过程的一个选项是使用SqlCommand对象和SqlParameter对象。
例如,您可以构建一组SqlParameter对象来表示您的参数,以及一个运行SqlCommand来填充DataSet的函数。
你可以用两个函数来实现它,一个是构建一个SqlParameters列表的函数,你可以为每个参数调用一次以将它添加到列表中,另一个函数可以获取该列表和存储过程的名称等等。运行存储过程。
如果你只是这样做,这些功能可能会有点开销,所以我还展示了一个在一个函数中完成所有操作的例子。
在下面的示例中,我展示了如何返回DataSet,但您可以使用cmdt.ExecuteNonQuery(),就像在独立示例中一样。
“构建”参数列表的辅助函数:
private void BuildSqlParameter(string ParameterName, SqlDbType DBType,
string Value, ParameterDirection dir, ref List<SqlParameter> paras)
{
SqlParameter temp;
temp = new SqlParameter(ParameterName, DBType);
temp.Value = Value;
temp.Direction = dir;
paras.Add(temp);
}
运行存储过程的函数:
private DataSet GetStoredProcedureWithParameters(SqlConnection SQLC,
string StoredProcedureName, List<SqlParameter> paras)
{
SQLC.Open();
SqlCommand cmdt = new SqlCommand(StoredProcedureName, WEL);
cmdt.CommandType = CommandType.StoredProcedure;
cmdt.Parameters.AddRange(paras.ToArray());
SqlDataAdapter dat = new SqlDataAdapter(cmdt);
DataSet dst = new DataSet();
dat.Fill(dst);
SQLC.Close();
return dst;
}
然后像这样打电话: public SqlConnection MySQLConnection = new SqlConnection(“Database = MyDB; SERVER = MyServer; Failover Partner = MyServer2; UID = MyID; PWD = MyPassword”); List para = new List(); BuildSqlParameter(“@ ParameterName”,SqlDbType.VarChar, ParameterValue,ParameterDirection.Input,ref paras); DataSet local = GetStoredProcedureWithParameters(MySQLConnection, “MyStoredProcedureName”,para);
其中:
如果您需要多个参数,只需根据需要多次运行BuildSqlParameter。
或者,如果您只想要一些代码,请执行以下操作:
MySQLConnection.Open();
SqlCommand cmdt = new SqlCommand("MyStoredProcedureName",
MySQLConnection);
cmdt.CommandType = CommandType.StoredProcedure;
SqlParameter para = cmdt.Parameters.Add("@ParameterName",
System.Data.SqlDbType.VarChar);
para.Value = ParameterValue;
para.Direction = ParameterDirection.Input;
cmdt.ExecuteNonQuery();
MySQLConnection.Close();
要添加更多参数,请执行以下操作:
SqlParameter para2 = cmdt.Parameters.Add("@ParameterName2",
System.Data.SqlDbType.VarChar);
para2.Value = ParameterValue2;
para2.Direction = ParameterDirection.Input;
其中: