整数类型的列不能保存 char 类型的值



我的数据库中有一个名为BENEFICTOR的表。当我尝试插入到此表中时,它给我以下错误:

整数类型的列无法保存 char 类型的值,我在文本字段 (T1,T2,...) 中键入 true 值。

private void Add_PeopleActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here:
    int bid=Integer.parseInt(T1.getText());
    int fid=Integer.parseInt(T2.getText());
    int idnum=Integer.parseInt(T5.getText());
    int age = Integer.parseInt(T14.getText());
    try{
        String url="jdbc:derby://localhost:1527/spc";
        String username="issam";
        String password="issam";
        Connection con=DriverManager.getConnection(url,username,password);
        Statement stmt=con.createStatement();
        String Query="INSERT INTO BENEFICTOR (BID,FID,FULL_NAME,GENDER,AGE,IDNUM,STATUS,ORIGINAL_AREA,RECENT_AREA,EVAL,PHONE_NUMBER1,PHONE_NUMBER2,SITUATION,VISIT) VALUES ("+bid+" , "+fid+" , '"+T3.getText().toString()+"' , '"+T4.getSelectedItem().toString()+"' , "+age+" , "+idnum+" , '"+T6.getSelectedItem().toString()+"' , '"+T7.getText().toString()+"' , '"+T8.getText().toString()+"' , '"+T9.getSelectedItem().toString()+"' , '"+T10.getText().toString()+"' , '"+T11.getText().toString()+"' , '"+T12.getText().toString()+"' , '"+T13.getText().toString()+"')";
        stmt.executeUpdate(Query);
        JOptionPane.showMessageDialog(null,"A Person Added To Database");
        T1.setText(null);
        T2.setText(null);
        T3.setText(null);
        T4.setSelectedItem(0);
        T5.setText(null);
        T6.setSelectedItem(0);
        T7.setText(null);
        T8.setText(null);
        T9.setSelectedItem(0);
        T10.setText(null);
        T11.setText(null);
        T12.setSelected(true);
        T13.setSelected(true);
        T14.setText(null);
    }
    catch(SQLException ex){
        JOptionPane.showMessageDialog(null, ex.toString());
    }
}   

谁能告诉我如何解决这个问题?谢谢。

以下是列字段的类型:

BID:INTEGER,FID:INTEGER,FULL_NAME:VARCHAR,GENDER:VARCHAR,AGE:INTEGER,IDNUM:INTEGER,STATUS:VARCHAR,ORIFINAL_AREA:VARCHAR,RECENT_AREA:VARCHAR,EVAL:VARCHAR,PHONE_NUMBER1:INTEGER,PHONE_NUMBER2:INTEGER,SITUATION:VARCHAR,VISIT:VARCHAR

StatusGendreeval都是组合框。 visitSituation是复选框

如果您尝试将char值存储在类型为 java.lang.Integer 的变量中,则需要像Integer.parseInt(String.valueOf(c))一样解析它们,其中 c 是您的char值。或者,您可以将变量类型更改为Object然后使用包装器类型java.lang.Integerjava.lang.Character来存储数据

可能列

PHONE_NUMBER1和PHONE_NUMBER2是 int 类型,您正在尝试在其中插入字符串。尝试以解析其他 int 值的方式解析电话号码:

int phoneNumber1 = Integer.parseInt(T10.getText());
int phoneNumber2 = Integer.parseInt(T11.getText());

然后,查询应如下所示:

String Query="INSERT INTO BENEFICTOR (BID,FID,FULL_NAME,GENDER,AGE,IDNUM,STATUS,ORIGINAL_AREA,RECENT_AREA,EVAL,PHONE_NUMBER1,PHONE_NUMBER2,SITUATION,VISIT) VALUES ("+bid+" , "+fid+" , '"+T3.getText().toString()+"' , '"+T4.getSelectedItem().toString()+"' , "+age+" , "+idnum+" , '"+T6.getSelectedItem().toString()+"' , '"+T7.getText().toString()+"' , '"+T8.getText().toString()+"' , '"+T9.getSelectedItem().toString()+"' , "+phoneNumber1+" , "+phoneNumber2+" , '"+T12.getText().toString()+"' , '"+T13.getText().toString()+"')";

最新更新