急!急!急!如何调用多参数的存储过程

ran21g 2008-01-08 09:57:37
我们在开发中在数据层的类中写了这样两个方法
/// <summary>
/// 使用存储过程获得dataSet
/// </summary>
/// <param name="proc">存储过程名称</param>
/// <param name="pt">参数数组</param>
/// <returns>DataSet数据集合</returns>
static public DataSet GetDataSetProc(string sql, string proc, SqlParameter[] pt)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["StrConn"];
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = proc;
for (int i = 0; i<=pt.Length; i++)
{
cmd.Parameters.Add(pt[i]);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
return ds;
}
catch (Exception e)
{
string u = e.Message;
return null;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="proc">存储过程名</param>
/// <param name="pt">存储过程参数数组</param>
public void ExeProc(string sql, string proc, SqlParameter[] pt)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = System.Configuration.ConfigurationManager.AppSettings["StrConn"];
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = proc;
for (int i = 0; i < pt.Length; i++)
{
cmd.Parameters.Add(pt[i]);
}
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
方法知道但是不知道怎么用,主要是SqlParameter[] pt如何带进去

存储过程很简单
CREATE PROC UP_USER
@uid varchar(10),
@uname varchar(18)
AS
select *from UsersInfo where Use_ID=@uid and Use_PWD=@uname

那么怎么把界面层得到的uid,name传进去??

谢谢各位高手啊!~~~~~
...全文
87 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
levenwood 2008-01-08
  • 打赏
  • 举报
回复
for (int i = 0; i < pt.Length; i++)
{
cmd.Parameters.Add(pt[i]);
}
这里放进去的
csshan 2008-01-08
  • 打赏
  • 举报
回复
Give you some advice:

write a mothod:
/// <summary>
/// Create command object used to call stored procedure.
/// </summary>
/// <param name="procName">Name of stored procedure.</param>
/// <param name="prams">Params to stored procedure.</param>
/// <returns>Command object.</returns>
private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
{
// make sure connection is open
Open();

sqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;

// add proc parameters
if (prams != null)
{
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// return param
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));

return cmd;
}

 exe stored procedure
public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
{
SqlCommand cmd = CreateCommand(procName, prams);
dataReader = cmd.ExecuteReader (System.Data.CommandBehavior.CloseConnection);
}



call RunProc
public DataSet LogInSelectByNP(string LoginName,int uid)
{
string strProcName="LogInSelectByNP";
string strTableName="Login";
DataSet ds;
// params to stored proc
Database data = new Database();
SqlParameter[] prams = {
data.MakeInParam("@LoginName", SqlDbType.NVarChar, 10, LoginName),
data.MakeInParam("@Password", SqlDbType.Int, 4, uid)
};
ds=data.RunProcDataSet(strProcName,prams,strTableName); // run the stored procedure
return ds;
}

UI TextBox send parms to LogInSelectByNP();

such as:
LogInSelectByNP(txtName.text,txtID.toString());

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧