public bool Exists(string sjid,string jb)
        {
            bool sbs;
            SqlParameter[] parms = new SqlParameter[] { new SqlParameter("@sjid", sjid),new SqlParameter("@jb",jb) };
            SqlDataReader sdr = SqlDb.ExecuteReader(SqlDb.ConnMainString, CommandType.Text, SQL_SELECT, parms);            
            if (sdr!=null)
            {
                sbs = true;
            }
            else
            {
                sbs = false;
            }
            return sbs;
        }
//其中sjid 和jb为同一张表的双主键
private const string SQL_SELECT = "select sjid,jb from sj_mz_ycfswk_sjpsjl where sjid=@sjid and jb=@jb ";
//SQL查询语句
问题描述如下:
现在我里面有个0000091 /*(数据ID)*/   city   /*(行政级别)*/
但是每当我想插入时  0000091 /*(数据ID)*/   gj   /*(行政级别)*/时,老是执行sbs = true;

解决方案 »

  1.   

    我觉得你这个if (sdr!=null) 判断有问题..
      

  2.   

    这样写试试
    if(sdr.Read() )
    或者
     while(sdr.Read ()) 
        { 
             //
        }
      

  3.   

    判断sdr.read试过,结果也一样
      

  4.   

    private const string SQL_SELECT = "select sjid,jb from sj_mz_ycfswk_sjpsjl where sjid=@sjid and jb=@jb ";用的语句,始终不行现在我里面有个0000091 /*(数据ID)*/   city   /*(行政级别)*/
    但是每当我想插入时  0000091 /*(数据ID)*/   gj   /*(行政级别)*/时,老是执行sbs = true
    然后跳到更新语句
      

  5.   

    首先你要明确下判断时用 if(dr.Read()){
     //重复
    }二你的参数是否正确,你可以把它写死如
    select sjid,jb from sj_mz_ycfswk_sjpsjl where sjid='0000091' and jb='gj'试试
      

  6.   

    // 按道理 xxxCommond.ExecuteReader(...) 返回的 xxxDataReader != null
    // 不知道你的SqlDb.ExecuteReader 内部是如何实现的,
    // 故尝试这样:
    if (sdr!=null)             {
                    sbs = true;
                }
                else
                {
                    sbs = false;
                }>>>>>sbs = ((sdr != null) && sdr.HasRow);
      

  7.   

    sdr.HasRow----------SqlDataReader不包含HasRow
      

  8.   

    sbs=false;
    while(sdr.read()){sbs=true;}