2016-05-20 5 views
0

データベースにBENEFICTORという名前のテーブルがあります。私はこのテーブルに挿入しようとすると、それは私に次のエラー与える:整数型の列には、char型の値を格納できません。

columns of type integer cannot hold values of type char and i am typing a true values in the textfields (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は、すべてのコンボボックスです。あなたは、Cがあなたのchar値であるInteger.parseInt(String.valueOf(c))のようにそれらを解析する必要がjava.lang.Integer型の変数にchar値を格納しようとしている場合visitSituationは、チェックボックス

+0

あなたはBenefictorテーブルモデルを共有することはできますか?また、PreparedStatementとsetInt関数を使ってパラメータを追加することもできますか? http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

+0

.toString()を呼び出してデータを挿入する列のタイプを確認してください。つまり、T6のようにデータを挿入することですStatusカラムの.getSelectedItem()。toString()は、実際にはchar型かどうかを確認してください。.toString()を使用してデータを挿入する他のカラムの型をチェックしてください。 – sawyinwaimon

+0

あなたはここに推測ゲームをするよう人々に求めています。最小、完全、および検証可能な例を提供してください:http://stackoverflow.com/help/mcve –

答えて

0

です。 それとも、Objectにあなたの変数の型を変更することができ、あなたは

+0

私はInteger.parseIntのようにそれらを解析しています..私のコードでどこに問題がありますか? –

0

あなたのデータを格納するラッパー型java.lang.Integerjava.lang.Characterを使用し、おそらくcolums 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()+"')"; 
+0

私はそれを修正しましたが、それでも問題は同じです –

+0

PHONE_NUMBER1とPHONE_NUMBER2は実際には整数型なので、あなたの説明を見れば解決します。あなたの質問のコードを更新できますか? –

関連する問題