if (cmd.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("发送成功");
                }
                else
                {                    MessageBox.Show("插入数据库返回错误");
                }
在以下的代码中 只要增加上 以上代码  在插入数据 总是插入2条数据,不加上面代码 插入数据就不会多插一条 为什么?
完整代码     private void button1_Click(object sender, EventArgs e)
        {            if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
            {                MessageBox.Show("号码及短信内容不能为空!");
            }            else
            {
                SqlConnection conn = BaseClass.DBConn.CyCon();
                conn.Open();
                SqlCommand cmd = new SqlCommand("insert into sms_sendmsg (channo,msgid,srcterminalid,destterminalid,feeterminalid,serviceid,feetype,feecode,msgfmt,msgcontent,msgtype,linkid,sendtime,resendcnt) values ('8','0','" + textBox3.Text + "','" + textBox1.Text + "','" + textBox1.Text + "','1065555555','1','000000','15','" + textBox2.Text + "','33','0',getdate(),'0')", conn);
                cmd.ExecuteNonQuery();              if (cmd.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("发送成功");
                }
                else
                {                    MessageBox.Show("插入数据库返回错误");
                }
            }
        }

解决方案 »

  1.   

                    cmd.ExecuteNonQuery();              if (cmd.ExecuteNonQuery() > 0)执行两遍
      

  2.   

     int a = cmd.ExecuteNonQuery();if (a  > 0)
                    {
                        MessageBox.Show("发送成功");
                    }
                    else
                    {                    MessageBox.Show("插入数据库返回错误");
                    }
      

  3.   

    因为cmd.ExecuteNonQuery();这个方法没执行了两次。。
    你在if (cmd.ExecuteNonQuery() > 0) 它在if语句里又执行一次,当然会重复插入了,你可以把if之外的那句cmd.ExecuteNonQuery()删掉就好了。或者你也可以搞个变量等于cmd.ExecuteNonQuery()的返回值,然后if语句里判断返回值。