向数据库插入一条编号为001的数据,如果该数据已存在,提示我编号不能重复

解决方案 »

  1.   

    select * from table where id=001
    if @@rowcount==0 then
     insert into table values(001)
    else
     print '001 is exists.'
    end if存储过程也可以你也在程序里面先查询
    如果存在就提示
    不存在就插入string sql="select * from table where id=001";SqlConnection conn=new SqlConnection("....");SqlCommand cmd=new SqlCommand(conn,sql);
    conn.Open();SqlDataReader reader=cmd.ExecuteReader();if(reader.Read()
    {
    MessageBox.Show("exists");
    }
    else
    {
       cmd.CommandText="insert into table values(001)";
      ...
    ...
    }
      

  2.   

    谢谢4搂的朋友,问题已解决
    可我用下面的代码为什么就不行呢?我感觉思路可行啊
    string sql="select * from table where id=001"; SqlConnection conn=new SqlConnection("...."); SqlCommand cmd=new SqlCommand(conn,sql); 
    conn.Open(); int i=cmd.ExecuteNonQuery();if(i>0) 

    MessageBox.Show("exists"); 

    else 

      cmd.CommandText="insert into table values(001)"; 
      ... 
    ... 
    }
      

  3.   

    你的方法用错了
    public int ExecuteNonQuery();返回值
    受影响的行数。实现
    IDbCommand.ExecuteNonQuery备注
    您可以使用 ExecuteNonQuery 来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。可以使用ExecuteScalar()方法:
    string sql="select count(*) from table where id=001"; SqlConnection conn=new SqlConnection("...."); SqlCommand cmd=new SqlCommand(conn,sql); 
    conn.Open(); int i=cmd.ExecuteScalar();if(i>0) 

    MessageBox.Show("exists"); 

    else 

      cmd.CommandText="insert into table values(001)"; 
      ... 
    ... 
    }