为什么一执行,就增加了两条记录?
代码:
        conn.Open();
        string sid = System.Guid.NewGuid().ToString();
        string sql = "insert into count (atitle,author,unit,sid) values (?,?,?,?)";
        cmd.Parameters.Clear();
        cmd.CommandText = sql;
        cmd.Parameters.Add("atitle", OleDbType.VarChar).Value = TextBox1.Text;
        cmd.Parameters.Add("author", OleDbType.VarChar).Value = TextBox2.Text;
        cmd.Parameters.Add("unit", OleDbType.VarChar).Value = TextBox3.Text;
        cmd.Parameters.Add("sid", OleDbType.VarChar).Value = sid;
        cmd.ExecuteNonQuery();
        sql = "select id from count where sid='" + sid + "'";
        odr = cmd.ExecuteReader();
        if (!odr.HasRows)
        {
            odr.Close();
            conn.Close();
            Lmsg.Text = "*错误:数据加入错误!!请重新录入!!!";
            return;
        }
        odr.Read();
        odr.Close();
        conn.Close();

解决方案 »

  1.   

     cmd.ExecuteNonQuery(); 
            sql = "select id from count where sid='" + sid + "'"; 
            odr = cmd.ExecuteReader(); 
    是不是因为cmd.ExecuteReader(); 执行了两次啊
      

  2.   

    可能是页面刷新了,就连这个CSDN发贴还有这个毛病,你刚发完贴,马上点刷新,你去看一下,你一共就发了两次贴,他这个就没有很好,不信你试一下,
      

  3.   

            conn.Open(); 
            string sid = System.Guid.NewGuid().ToString(); 
            string sql = "insert into count (atitle,author,unit,sid) values (?,?,?,?)"; 
            cmd.Parameters.Clear(); 
            cmd.CommandText = sql; 
            cmd.Parameters.Add("atitle", OleDbType.VarChar).Value = TextBox1.Text; 
            cmd.Parameters.Add("author", OleDbType.VarChar).Value = TextBox2.Text; 
            cmd.Parameters.Add("unit", OleDbType.VarChar).Value = TextBox3.Text; 
            cmd.Parameters.Add("sid", OleDbType.VarChar).Value = sid; 
            cmd.ExecuteNonQuery(); 
            sql = "select id from count where sid='" + sid + "'";     
            odr = cmd.ExecuteReader(); 
            if (!odr.HasRows) 
            { 
                odr.Close(); 
                conn.Close(); 
                Lmsg.Text = "*错误:数据加入错误!!请重新录入!!!"; 
                return; 
            } 
            odr.Read(); 
            odr.Close(); 
            conn.Close(); 
            红色sql并没有重新赋给cmd.
            应该在odr = cmd.ExecuteReader(); 
            前面再加一句cmd.CommandText = sql;
            试试吧。