当前位置:编程学习 > C#/ASP.NET >>

用C#将数据插入数据库,判断是否重复

我要将一字符串插入到数据库,但之前要进行判断是否和数据库中的数据重复,以下是我的代码:
 
 protected void submit_Click(object sender, EventArgs e)
    {
       string code;
       code = Convert.ToString(this.TextBox1.Text);
       System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"'", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
       code = regex.Replace(code, " "); 
       

        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=CodeRead;uid=sa;pwd= ");
        conn.Open();
        string sql = "select Count(1) from code where numble=('" + code + "')";
        SqlCommand cmd1 = new SqlCommand(sql, conn);
        int count = (int)cmd1.ExecuteScalar();


        if (count > 1)
        
            Response.Write("数据重复!");
            
        
        else
        {
            SqlCommand cmd = new SqlCommand("insert into code(numble) values('" + code + "')", conn);
            
            cmd.ExecuteNonQuery();
            if (cmd.ExecuteNonQuery() > 0)
                Response.Write(code + "数据导入成功!");
            else
                Response.Write("数据导入错误!");
            
            conn.Close();

        }


当插入“22”

小女接触不久,求高手帮忙!!深表感激!! --------------------编程问答--------------------

 if (count > 1)//大于1,也就是2个时候,才会数据重复
     Response.Write("数据重复!");
--------------------编程问答-------------------- string sql = "select Count(1) from code where numble=('" + code + "')";

 if (count > 1)
有问题 --------------------编程问答-------------------- string code= Convert.ToString(this.TextBox1.Text);
        SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=CodeRead;uid=sa;pwd= ");
        conn.Open();
        string sql = "select * from code where numble='" + code.Trim() + "'";
        SqlCommand cmd1 = new SqlCommand(sql, conn);
        int count = (int)cmd1.ExecuteScalar();
        if (count > 1)
            Response.Write("数据重复!");
   break;
        else
        {
            SqlCommand cmd = new SqlCommand("insert into code(numble) values('" + code + "')", conn);
            
            cmd.ExecuteNonQuery();
            if (cmd.ExecuteNonQuery() > 0)
                Response.Write(code + "数据导入成功!");
            else
                Response.Write("数据导入错误!");
            
            conn.Close();
        }
--------------------编程问答-------------------- count >=1
而且要注意下连接的关闭 --------------------编程问答-------------------- if (count > 0)
        
            Response.Write("数据重复!");
--------------------编程问答-------------------- 1.给 这个 字段加唯一 约束 就不用 判断那么 麻烦了。
2.直接抛出异常,处理下弹出提示. --------------------编程问答--------------------
引用 4 楼  的回复:
count >=1
而且要注意下连接的关闭

+1 --------------------编程问答--------------------
引用 6 楼  的回复:
1.给 这个 字段加唯一 约束 就不用 判断那么 麻烦了。
2.直接抛出异常,处理下弹出提示.

同解~~~ --------------------编程问答-------------------- IF((select Count(1) from code where numble=@numble )<1)
BEGIN
insert into code(numble) values(@numble)
END
--------------------编程问答--------------------
引用 8 楼  的回复:
引用 6 楼  的回复:
1.给 这个 字段加唯一 约束 就不用 判断那么 麻烦了。
2.直接抛出异常,处理下弹出提示.

同解~~~

抛出异常影响性能难道不知道么?晕死。。
string sql = "select Count(*) from code where numble=('" + code + "')";
我想这样进行查询的时候应该可以查询出来是否有值。 --------------------编程问答-------------------- 如果导入excel还是用事务把。
--------------------编程问答-------------------- 建议在数据库加一个不重复的约束 --------------------编程问答--------------------
引用 6 楼  的回复:
1.给 这个 字段加唯一 约束 就不用 判断那么 麻烦了。
2.直接抛出异常,处理下弹出提示.

最好的方法 --------------------编程问答-------------------- 判断条件写错了,if条件应该是(count > 0) --------------------编程问答-------------------- --------------------编程问答--------------------
引用 6 楼  的回复:
1.给 这个 字段加唯一 约束 就不用 判断那么 麻烦了。
2.直接抛出异常,处理下弹出提示.


还真有人敢推荐这种方法啊
--------------------编程问答-------------------- 不用判断有没有重复的   直接就删除了之前的   然后放最新的····· --------------------编程问答--------------------
引用 1 楼  的回复:
C# code

 if (count > 1)//大于1,也就是2个时候,才会数据重复
     Response.Write("数据重复!");

发现把判断重复语句删掉,插入一组字符串还是会添加两个到数据库,好像是提交时触发了两次submit_Click事件,求帮助怎么解决? --------------------编程问答-------------------- 发现把判断重复语句删掉,插入一组字符串还是会添加两个到数据库,好像是提交时触发了两次submit_Click事件,求帮助怎么解决? --------------------编程问答-------------------- 结贴吧 --------------------编程问答-------------------- 这个你可以用存储过程来帮你做啊,给你个返回值告诉你记录重复就好了,以后修改的话直接改存储过程就可以了,不用改代码了 --------------------编程问答--------------------
引用 6 楼  的回复:
1.给 这个 字段加唯一 约束 就不用 判断那么 麻烦了。
2.直接抛出异常,处理下弹出提示.

有道理。。 --------------------编程问答-------------------- 把这一列的数据都捞出来,包含在里面的就不要在插入了 --------------------编程问答--------------------
引用 5 楼  的回复:
if (count > 0)
        
            Response.Write("数据重复!");

这个正解
--------------------编程问答-------------------- 应该 if (count == 1)  或者if (count > 0)

--------------------编程问答-------------------- 像这种操作数据库的,最好封装成一个类。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- if(count>0) --------------------编程问答--------------------
引用 4 楼 Q333111555 的回复:
count >=1
而且要注意下连接的关闭
+1 --------------------编程问答-------------------- 楼上再+1。。 --------------------编程问答-------------------- --------------------编程问答-------------------- 這是我的代碼,你參考下
DECLARE
   num   NUMBER;
BEGIN
   SELECT COUNT (*)
     INTO num
     FROM glb_rpt_uph
    WHERE start_time = TO_DATE ('2013-6-13 15:30:00', 'yyyy-MM-dd hh24:mi:ss');
          /*在表glb_rpt_uph中查詢條件滿足
             start_time = TO_DATE ('2013-6-13 15:30:00', 'yyyy-MM-dd hh24:mi:ss')
            的數據數量,存入num中*/
   IF num <> 0  
        /*判斷num若是數量不為0,則說明存在,只更新數據,不插入*/
   THEN
      UPDATE glb_rpt_uph
         SET model = 'AK73-BTE-EA1',
             shift = 'd',
             end_time =
                       TO_DATE ('2013-6-13 16:30:00', 'yyyy-MM-dd hh24:mi:ss'),
             input = 0,
             output = 0,
             fpy = 1,
             uph = 107,
             upph = 4
       WHERE start_time =
                       TO_DATE ('2013-6-13 15:30:00', 'yyyy-MM-dd hh24:mi:ss');
   ELSE 
       /*不存在,則插入*/
      INSERT INTO glb_rpt_uph
           VALUES ('AK73-BTE-EA1', 'd',
                   TO_DATE ('2013-6-13 15:30:00', 'yyyy-MM-dd hh24:mi:ss'),
                   TO_DATE ('2013-6-13 16:30:00', 'yyyy-MM-dd hh24:mi:ss'),
                   0, 0, 1, 107, 4);
   END IF;
END;
--------------------编程问答--------------------
引用 8 楼  的回复:
抛出异常影响性能难道不知道么?晕死。。


太逗了... 这简单的功能都没实现 你竟然跟我谈性能 --------------------编程问答--------------------

cw(count==0?"不存在,可以insert":"有了");
--------------------编程问答-------------------- 最简单的办法就是 建个唯一约束。
如果嫌异常麻烦,那就做个存储过程,先查存不存在,如果存在就不插新数据;
或者有代码来做,先查在插入。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,