integer类型的列不能包含char类型的值

时间:2016-05-20 08:15:52

标签: java

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

  

整数类型的列不能保存char类型的值,我在文本字段中输入了一个真值(T1,T2,...)。

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都是ComboBox。 visitSituation是复选框

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

可能是列号PHONE_NUMBER1和PHONE_NUMBER2的类型为int,您尝试在其中插入字符串。 尝试以解析其他int值的方式解析phonenumbers:

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()+"')";