//查询是否存在未签收数据 string sql = "select ac1 from msg_jg where JGBH='" + Session["userdwid"].ToString() + "'"; DataTable dtt=(new lgyzagl_bll.MESSAGES()).DoSql(sql); if (dtt.Rows.Count != 0) { string ggs = dtt.Rows[0][0].ToString(); string s = ""; if (ggs.Length > 0) { string[] gs = ggs.Substring(0, ggs.Length - 1).Split(','); for (int i = 0; i < gs.Length; i++) { s += "'" + gs[i] + "',"; } s = s.Substring(0, s.Length - 1); } sql = "select * from MESSAGES where Id in(" + s + ") order by id desc"; DataTable dt1 = (new lgyzagl_bll.MESSAGES()).DoSql(sql);就是怎么写的,当ac1为null时,就有可能报错
拼的s串有问题. 在sql = "select * from MESSAGES where Id in(" + s + ") order by id desc"; 后加个断点,看看null的时候是不是出现in('1',,'2')类似这样的情况
string sql = "select ac1 from msg_jg where JGBH='" + Session["userdwid"].ToString() + "'"; DataTable dtt=(new lgyzagl_bll.MESSAGES()).DoSql(sql);
if (dtt.Rows.Count != 0)
{
string ggs = dtt.Rows[0][0].ToString(); string s = "";
if (ggs.Length > 0)
{ string[] gs = ggs.Substring(0, ggs.Length - 1).Split(','); for (int i = 0; i < gs.Length; i++)
{
s += "'" + gs[i] + "',";
} s = s.Substring(0, s.Length - 1);
}
sql = "select * from MESSAGES where Id in(" + s + ") order by id desc";
DataTable dt1 = (new lgyzagl_bll.MESSAGES()).DoSql(sql);就是怎么写的,当ac1为null时,就有可能报错
拼的s串有问题.
在sql = "select * from MESSAGES where Id in(" + s + ") order by id desc";
后加个断点,看看null的时候是不是出现in('1',,'2')类似这样的情况
ac1为null,并不表示dtt.Rows.Count为0,应该为1
ac1为null,并没有看到你的特殊处理
rows.length大于0,不代表值不为null,如果等于null,你要处理一下
加逻辑判断,再拼cou语句
并不是[空]的意思,
就是没有唯一的肯定结果所以不做特殊处理或者判断,出现不稳定或者不同时间同样处理出现不同结果
是有可能的
既然有null的时候sql报错,必然会在sql组装完毕但未执行的地方加断点来查看拼装的sql有没有问题.