解决方案 »

  1.   

    sdr["name"]先判断是否为null,不是null才能ToString(),严谨点应该先判有没name这个列
      

  2.   

    没查到数据的话,  if (sdr["name"].ToString().Trim() == "")这个判断是应该是会报错的,你可以把这个if判断直接拿掉的看看
      

  3.   

    我取取出来的这个值就是空的,列存在的   用null 还是报这个错 如图:
      

  4.   

    没用  好像上面的  if (sdr.Read())  也有问题  , 这个查询取出来的是没有记录的,根据这个查询做个判断 有记录就不加,没记录就加一条
      

  5.   

     if (sdr.Read())你程序走的是else?
      

  6.   

    不能这么搞吗?  我本来是放上面的,只是他老是不走那边 就放下面试试,  新手
    sdr.Read()这是判断有没有数据的啊,而且你执行了两次,第一条数据给你跳过去了
      

  7.   

    不能这么搞吗?  我本来是放上面的,只是他老是不走那边 就放下面试试,  新手
    sdr.Read()这是判断有没有数据的啊,而且你执行了两次,第一条数据给你跳过去了这个要怎么写    有数据就不执行insert ,没数据就执行
      

  8.   


     SqlCommand cmd = new SqlCommand(sqlstr, con);
             SqlDataReader sdr = cmd.ExecuteReader();
             if (sdr.Read())
             {
                      //执行
             }
             else
            {
                    //不执行
            }
      

  9.   

    完整代码你看一下:
            int id =3;
            string constr = ConfigurationManager.AppSettings["cn"].ToString();
            SqlConnection con = new SqlConnection(constr);
            con.Open();
            if (CheckBox2.Checked == true)
            { 
            string sqlstr = "select * from ym where id=  ' " + id + "'and name ='" + CheckBox2.Text.ToString().Trim() + "'";
            SqlCommand cmd = new SqlCommand(sqlstr, con);
            SqlDataReader sdr = cmd.ExecuteReader();
           
            if (sdr.Read())
            {
            string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')";
                    SqlCommand cmd1 = new SqlCommand(sqlstr1, con);
    }
            else
            {
               
                    
                   // SqlDataReader sdr1 = cmd.ExecuteReader();
                
            }
            sdr.Close();
            }
            else 
            {
                string sqlstr2 = "delete from ym where id= '" + id + "'and name ='" + CheckBox2.Text.ToString().Trim() + "'";
                SqlCommand cmd2 = new SqlCommand(sqlstr2, con);
                SqlDataReader sdr2 = cmd2.ExecuteReader();
            }  
    con.Close();
    放上面下面都不行  不知道为什么  没有报错  就是没数据加到数据库
      

  10.   

     string sqlstr1 = "insert ym (fid,name,id)values('" + 10001 + "','" + CheckBox2.Text.ToString().Trim() + "','" + id + "')";
                     SqlCommand cmd1 = new SqlCommand(sqlstr1, con);
    而且你insert又没执行,我劝你还是去网上找几个SqlCommand的例子看看吧
      

  11.   

    数据库没这条insert数据,要实现的就是CheckBox2.Checked == true时 先做个判断  数据库里有没有这条数据 如果有那就不执行,没有就执行insert这条数据
      

  12.   

    数据库没这条insert数据,要实现的就是CheckBox2.Checked == true时 先做个判断  数据库里有没有这条数据 如果有那就不执行,没有就执行insert这条数据
    那就代码反一反呗
      

  13.   

    数据库没这条insert数据,要实现的就是CheckBox2.Checked == true时 先做个判断  数据库里有没有这条数据 如果有那就不执行,没有就执行insert这条数据
    那就代码反一反呗
    if和else 都放过了   就是不执行好就是  select 做了 上面没数据,然后  if (sdr.Read())这个好像完全没用
      

  14.   

    你把insert逻辑放外面执行,在不执行就是你自己代码有问题
      

  15.   

    这个可以的
      把这句加上去 SqlDataReader sdr1 = cmd.ExecuteReader();把上面的这句SqlDataReader sdr = cmd.ExecuteReader();隐藏因为数据库里面id设了主键    当重复加的时候会报错    这个有什么办法让他不报错否   不报错也就成功了
      

  16.   

    应该能出来的答案:
    http://bbs.csdn.net/topics/390789802