【发布时间】:2016-05-20 17:15:36
【问题描述】:
我的数据库中有一个名为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
Status、Gendre、eval 都是 ComboBoxes。 visit 和 Situation 是复选框
【问题讨论】:
-
可以分享一下 Benefictor 桌子模型吗?您也可以尝试使用 PreparedStatement 和 setInt 函数来添加参数吗? docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
-
请检查您通过调用.toString()插入数据的列类型。我的意思是您在Status列中插入数据就像T6.getSelectedItem().toString()一样。请检查Status 的类型是否真的是 char 类型。请检查您使用 .toString() 插入数据的其他列的类型。
-
你在这里要求人们玩猜谜游戏。请提供一个最小、完整、可验证的示例:stackoverflow.com/help/mcve
标签: java