日期:2014-05-17  浏览次数:20512 次

用ExecuteNonQuery()执行insert 语句不成功
 update语句能正确执行,若为insert时就不行,不报错,到cmd.ExecuteNonQuery();这句的时候就直接跳出try语句了,拿到sql server 的查询分析器里也能正确执行。
  
代码如下:
             int i = Convert.ToInt32(TextBox1.Text);
                string strsql = "";
                SqlCommand cmd = new SqlCommand(strsql, cn);
                if (i > 0)
                {
                    strsql = "update [checkin] set sid=@p1,intime=@p4 where id="+TextBox1.Text; 
                }
                else
                {
                    strsql = "insert into checkin(sid,did,intime) values(@p1,@p2,@p3)";
                 }                 
                cmd.Parameters.Add("@p1", SqlDbType.VarChar).Value = txtxh.Text;
                cmd.Parameters.Add("@p2", SqlDbType.Int).Value = ddlssm.SelectedValue;
                cmd.Parameters.Add("@p3", SqlDbType.SmallDateTime).Value =System.DateTime.Now;
                cmd.Parameters.Add("@p4", SqlDbType.SmallDateTime).Value = txtrzsj.Text;
                cmd.CommandText = strsql;
                cmd.ExecuteNonQuery();


------解决方案--------------------
cmd.Parameters.Add("@p4", SqlDbType.SmallDateTime).Value = txtrzsj.Text;

你insert的时候   有@p4?

把这个放进if里面
------解决方案--------------------
把参数赋值写进循环吧

另外3楼 写错了,Command 执行SQL 没有 open 方法,应该是Connection 数据库链接才有。
------解决方案--------------------
引用:
哦,这个啊,写着catch了, 
        catch
        {
            cn.Close(); 
            Response.Write("<script>alert('操作失败!')</script>");
        }
当时就是出来“操作失败了”


那就是有异常抛出来了,你怎么能说不报错呢...