Database
#region 将命令文本添加到SQLDataReaderr(有返回值)
/// <summary>
/// 创建一个SqlDataReader对象
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <param name="tbName"></param>
/// <returns></returns>
public SqlDataReader CreateDataReaderTwo(string procName, SqlParameter[] prams, string tbName) ///返回DataReader对象
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
#endregionDal
public SqlDataReader FindTeacherByDepts(MODAL.tblTeachers tblTeachers ,string tbName)
{
SqlParameter[] prams ={
data.MakeInParam("@DeptID",SqlDbType.VarChar,4,tblTeachers.Deptid),
}; return (data.CreateDataReaderTwo("select * from tbl_Teachers where DeptID like @DeptID", prams, tbName));
}From
public void AddTeachersDisplay()
{
ModTeachers.Deptid = DeptsID;
SqlDataReader Read = DalTeachers.FindTeacherByDepts(ModTeachers,"MODAL.tblTeachers");
while (Read.Read())
TeacherNameBox.Items.Add(Read["TeacherName"].ToString());
Read.Close();
}出现问题,必须声明标量变量 "@DeptID"。请问要如何改才能正确呢?
#region 将命令文本添加到SQLDataReaderr(有返回值)
/// <summary>
/// 创建一个SqlDataReader对象
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <param name="tbName"></param>
/// <returns></returns>
public SqlDataReader CreateDataReaderTwo(string procName, SqlParameter[] prams, string tbName) ///返回DataReader对象
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
#endregionDal
public SqlDataReader FindTeacherByDepts(MODAL.tblTeachers tblTeachers ,string tbName)
{
SqlParameter[] prams ={
data.MakeInParam("@DeptID",SqlDbType.VarChar,4,tblTeachers.Deptid),
}; return (data.CreateDataReaderTwo("select * from tbl_Teachers where DeptID like @DeptID", prams, tbName));
}From
public void AddTeachersDisplay()
{
ModTeachers.Deptid = DeptsID;
SqlDataReader Read = DalTeachers.FindTeacherByDepts(ModTeachers,"MODAL.tblTeachers");
while (Read.Read())
TeacherNameBox.Items.Add(Read["TeacherName"].ToString());
Read.Close();
}出现问题,必须声明标量变量 "@DeptID"。请问要如何改才能正确呢?
like需要的是具体的值。或者用string.format();可以将prams里面的值传进去。
public SqlDataReader CreateDataReaderTwo(string procName, string tbName) ///返回DataReader对象
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
} public SqlDataReader FindTeacherByDepts(MODAL.tblTeachers tblTeachers ,string tbName)
{
return (data.CreateDataReaderTwo("select * from tbl_Teachers where DeptID ='"+tblTeachers.Deptid+"'",tbName));
}
/// <summary>
/// 创建一个SqlDataReader对象
/// </summary>
/// <param name="procName"></param>
/// <param name="prams"></param>
/// <param name="tbName"></param>
/// <returns></returns>
public SqlDataReader CreateDataReaderTwo(string procName, SqlParameter[] prams, string tbName) ///返回DataReader对象
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.Parameters.AddRange(prams);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
#endregion
ModTeachers.Deptid = DeptsID;
DeptsID是具体的值,通过一个comboBox传入
这样
public SqlDataReader CreateDataReaderTwo(string procName, SqlParameter[] prams, string tbName) ///返回DataReader对象
{
this.Open();
SqlCommand cmd = new SqlCommand(procName, con);
cmd.Parameters.AddRange(prams);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
Parameters.Add(pram) 我要没记错前面的那个AddRange(prams)应该是数组,后面的Add(pram)是给个单个值!这样就可以给你的字符串语句的参数传入值了!希望能帮到你!