what's mean?
直接insert有什么问题吗?只是如果插入""值,int会自动插入0,不然就你显式插入NULL

解决方案 »

  1.   

    要插入的数据是不是从TextBox中取,如果是可以加一些判断条件,把它们都变为整形再往数据库来插嘛。
      

  2.   

    field1,field2,field3都对应一个文本框,添加时得分别判断三个字段是否为空,每一个都得执行不同的Sql语句,如果有一个文本框为空,insert时将会出错,不会自动插入0.
      

  3.   

    以access为例,你可以将3个字段的默认值设为0,这样执行insert时,就不用管文本框是否为空了,
      

  4.   

    OleDbCommand Cmd;
    Cmd=new OleDbCommand();
    Cmd.CommandType =CommandType.StoredProcedure ;
    Cmd.CommandText ="p_Ins";
    Cmd.Connection =Conn;
    if ( txt1.text == "" )
       Cmd.Parameters.Add("@f1",OleDbType.Integer ).Value=null;
    else
       Cmd.Parameters.Add("@f1",OleDbType.Integer ).Value=txt1.text;if ( txt2.text == "" )
       Cmd.Parameters.Add("@f2",OleDbType.Integer ).Value=null;
    else
       Cmd.Parameters.Add("@f2",OleDbType.Integer ).Value=txt2.text;if ( txt3.text == "" )
       Cmd.Parameters.Add("@f3",OleDbType.Integer ).Value=null;
    else
       Cmd.Parameters.Add("@f3",OleDbType.Integer ).Value=txt3.text;   Cmd.ExecuteNonQuery();
      

  5.   

    你在程序里判断文本框是否有输入的值,要是没有的话,写sql语句是就直接把那个字段的值设为0了
      

  6.   

    SqlCommand cmd=new SqlCommand(cmdstr,conn);
    myConnection.Open();
    cmd.Parameters.Add(New SqlParameter("@f1",SqlDbType.Int,4));
    if(txt1.Text=="")
    {
      cmd.Parameters["@f1"].value=null;
    }
    else
    {
      cmd.Parameters["@f1"].value=txt1.Text;
    }
    .......
    我是上面这样写的,但执行时出错,不知为什么?