我的数据库中有一个名为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
Status
、Gendre
、eval
都是组合框。 visit
和Situation
是复选框
如果您尝试将char
值存储在类型为 java.lang.Integer
的变量中,则需要像Integer.parseInt(String.valueOf(c))
一样解析它们,其中 c 是您的char
值。或者,您可以将变量类型更改为Object
然后使用包装器类型java.lang.Integer
和java.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()+"')";