c#,winform
我在form1裡寫:
     myclass.sqlconn.Open();
SqlDataReader aa=myclass.returnuserdept("str_tempdeptid");
while(aa.Read())
{
string eee=aa["deptid"].ToString();
MessageBox.Show(eee);
}
myclass.sqlconn.Close();
myclass裡的returnuserdept申明如下:
public SqlDataReader returnuserdept(string str_value)
{
SqlCommand sqlcomm=sqlconn.CreateCommand();
sqlcomm.CommandText="select * from Dept where DeptName='"+str_value+"'";
SqlDataReader sqldr=sqlcomm.ExecuteReader();
return sqldr;
}請問這樣寫哪裡有錯???為何messagebox出來的eee 總不是對應的deptid值???

解决方案 »

  1.   

    頂一下呀,我直接寫就不會有問題
    SqlCommand sqlcomm=myclass.sqlconn.CreateCommand();
    sqlcomm.CommandText="select * from Dept where DeptName='"+str_tempdeptid+"'";
    SqlDataReader sqldrdept=sqlcomm.ExecuteReader();
    while(sqldrdept.Read())
    {
    str_deptid=sqldrdept["DeptId"].ToString();
    }
    MessageBox.Show(str_deptid);請問這是為什麼丫?????
    為什麼從myclass裡傳遞過來就會出錯呢???
      

  2.   

    SqlDataReader aa=myclass.returnuserdept("str_tempdeptid");这段有问题,str_tempdeptid  是什么?为什么要加 “”呢?
      

  3.   

    str_tempdeptid  这是字符串啊
      

  4.   

    由于你的 SQL 语句是 select * 所以eee取出来应该是最后一条数据的值另外如果
      

  5.   

    rd没有值的话,你这样直接rd.read()会报错
    应该在while(rd.read())前面加个判断
    if(rd.Hasrows)
    {
       while(rd.read())
         ...
    }
      

  6.   

    while(aa.Read())
    {
    string eee=aa["deptid"].ToString();
    MessageBox.Show(eee);
    }
    这里显示的是每个符合 条件的deptidwhile(sqldrdept.Read())
    {
    str_deptid=sqldrdept["DeptId"].ToString();
    }
    MessageBox.Show(str_deptid);
    这里显示的是最后一个符合 条件的deptid
      

  7.   

    你看  select * from Dept where DeptName='str_tempdeptid'
    查询出多少条记录