加个判断不就行了么?if i=0 str=null;

解决方案 »

  1.   

    楼上说的好象不行啊,以下是;判断过后的代码,但是明显是不行的,因为数据库里的int型是不能用下面的setString方法的啊,而如果用setint,但参数又不能为null,不知道该怎么办
     
     public boolean addInt(CustomerView view)
     throws SQLException
    {
     DbCon dbCon = new DbCon();
     Connection conn = dbCon.getConnection("nscm");
     String sql = "insert into tRTCustomer (names,sex,vip,distype,certificate,certicode,province,"
      +"city,work,elevel,birthday,scope,mobile,hphone,ophone,address,postcode,email,notes,"+
    "creator,cDate,Mender,MDate,status,isVip,org,bdate,edate) values (?,?,?,?,?,?,?,?,?,?,CAST( ? AS datetime ),?,?,?,?,?,?,?,?,?,"+
    "CAST( ? AS datetime ),?,CAST( ? AS datetime ),?,?,?,CAST( ? AS datetime ),CAST( ? AS datetime ))";
     PreparedStatement ps = conn.prepareStatement(sql);
     
     ps.setString(1, view.getNames());
     ps.setInt(2, view.getSex());
     ps.setString(3, view.getVip());
     ps.setInt(4, view.getDisType());
     ps.setInt(5, view.getCertificate());
     ps.setString(6, view.getCertiCode());
     
     if(view.getProvince()==0){
      ps.setString(7, null);
     }else{
      ps.setInt(7, view.getProvince());
     }  if(view.getCity()==0){
      ps.setString(8,null);
     }else{
      ps.setInt(8,view.getCity());
     }     if(view.getWork()==0){
          ps.setString(9,null);
         }else{
          ps.setInt(9,view.getWork());
         }     if(view.getELevel()==0){
          ps.setString(10,null);
         }else{
          ps.setInt(10,view.getELevel());
         }
           ps.setString(11, view.getBirthday());
     
     if(view.getScope()==0){
      ps.setString(11,null);
     }else{
      ps.setInt(12, view.getScope());
     }
     
     ps.setString(13, view.getMobile());     
     ps.setString(14, view.getHPhone());
     ps.setString(15, view.getOPhone());
     ps.setString(16, view.getAddress());
     ps.setString(17, view.getPostCode());
     ps.setString(18, view.getEMail());
     ps.setString(19, view.getNotes());     
     ps.setInt(20,view.getCreator());
     ps.setString(21,view.getCDate());
     ps.setInt(22, view.getMender());
     ps.setString(23,view.getMDate());
     ps.setInt(24,view.getStatus());
     ps.setInt(25,view.getIsVip());
     ps.setInt(26,view.getOrg());
     ps.setString(27,view.getBDate());
     ps.setString(28,view.getEDate());
     
     try
     {
         ps.executeUpdate();
     }
     catch(SQLException ex)
     {
         ex.printStackTrace();
         boolean flag = false;
         return flag;
     }
     finally
     {
         if(ps != null)
             try
             {
                 ps.close();
             }
             catch(Exception exception1) { }
         if(conn != null)
             try
             {
                 conn.close();
             }
             catch(Exception exception2) { }
     }
     return true;
    }
      

  2.   

    尽量不要用外键
    或者,和cherish0302(低和) 说的一样,加个判断就可以了
      

  3.   

    准备两个或者多个sql语句,先判断是否是0,然后在用是否需要插入该值的sql语句
    比如
    if(view.getProvince()==0){
      //没有该字段的插入语句
    }
      

  4.   

    楼上的,一定要这么麻烦吗?这样写sql语句会累死的拉