日期:2014-05-17  浏览次数:20471 次

SqlDataReader 获取的值为空
代码如下:
  myCommand.CommandText = "select tel_no,holder_name,cate_code,a.clubcode,b.sex \n" +
  " from card_cardata a \n" +
  " inner join mem_member b on a.card_no = b.M_id \n" +
  " where card_no ='" + lbCardNo.Text + "'";

  SqlDataReader sdr = myCommand.ExecuteReader();
  while (sdr.Read())
  {
  tel_no = sdr["tel_no"].ToString();
  holder_name = sdr["holder_name"].ToString();
  cate_code = sdr["cate_code"].ToString();
  clubcode = sdr["clubcode"].ToString();
  sex = sdr["sex"].ToString();
  }

  sdr.Close();
问题点: sql语句参数获取值都没有问题,调试的时候将sql语句放到查询分析器内,是查得到值的。但是在程序内调试时SqlDataReader 为空。
请各位大神抽空帮忙看看,谢谢

------解决方案--------------------
断点, myCommand.CommandText值 在查询分析器内执行 
"select tel_no,holder_name,cate_code,a.clubcode,b.sex from card_cardata a inner join mem_member b on a.card_no = b.M_id where card_no ='" + lbCardNo.Text + "'";


------解决方案--------------------
加\n干嘛?你想换行??

这样
myCommand.CommandText = @"selecttel_no,holder_name,cate_code,a.clubcode,b.sex
from card_cardata a 
inner join mem_member b on a.card_no = b.M_id 
where card_no ='" + lbCardNo.Text + "'";


------解决方案--------------------
你输出一下myCommand.CommandText的值,看看sql语句是否正确。
------解决方案--------------------
" where card_no ='" + lbCardNo.Text + "'";

你数据库里 card_no 是 什么类型的 字段 


如果是 int 的就不要 加 单引号
如果是 NVARCHAR 或 VARCHAR 等其他字符型数据 可以加 单引号