代码:
public bool RunProcedure(string procedureName,string "参数") { SqlConnection _con = new SqlConnection(con); SqlCommand comm = new SqlCommand(procedureName, _con); try { _con.Open(); comm.CommandType = CommandType.StoredProcedure; comm.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar)); comm.Parameters["@name"].Value = 4; comm.Parameters.Add(new SqlParameter("@age", SqlDbType.VarChar)); comm.Parameters["@age"].Value = 4; comm.Parameters.Add(new SqlParameter("@sex", SqlDbType.VarChar)); comm.Parameters["@sex"].Value = 4; comm.Parameters.Add(new SqlParameter("@address", SqlDbType.VarChar)); comm.Parameters["@address"].Value = 4; int result = comm.ExecuteNonQuery(); if (result > 0) { return true; } return false; } catch (Exception ex) { throw ex; } finally { _con.Dispose(); _con.Close(); } }
中间的这个红色字体的:
comm.Parameters.Add 里面参数都是写死的 我希望的是能写成变量 是我调用的时候传递的变量 ,这个方法怎么封装啊?大侠们明白我的意思吗?
这个写法行吗?我在网上看的
SqlConnection conn = new SqlConnection(connectionstring); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = new SqlCommand(); da.SelectCommand.Connection = conn; da.SelectCommand.CommandText ="NameOfProcedure(’para1’,’para2’,para3)"; da.Selectcommand.CommandType = CommandType.StoredProcedure;
para1 para2 para3 就是变量
void MySqlParametersMothod(string paraName , SqlDbType type,string paraValue)
{
comm.Parameters.Add(new SqlParameter(paraName , type));
comm.Parameters[paraName].Value =paraValue);
}
试试吧,希望能帮到你~!
你直接根据类型,拼sql语句得了。
一般可以把DbParameter数组作为参数传递,这样就不需要在函数内部去拼接了。