2017-10-17 2 views
1

がここ列in_idgood_codein_groupin_quantityin_VATPaidsqliteのJavaのクエリは

good_inが私のテーブルの一例である enter image description here

という名前のsqliteのテーブルを持っており、それにレコードを挿入する方法を持っているテーブルに挿入されません。

public static void inputGoods(GoodsInput goodsinput){ 
    String goodCode = goodsinput.getInGood().getGood_code(); 
    int goodBatch = goodsinput.getInGroup(); 
    int goodQuantity = goodsinput.getInQuantity(); 
    double goodVATPaid = goodsinput.getInVatPaid(); 
    String sqlInsert = "INSERT INTO good_in (good_code, in_group, in_quantity, in_VATPaid)" 
      + " VALUES ('" + goodCode + "', " + "'" + goodBatch + "', " + "'" + goodQuantity 
      + "', " + "'" +goodVATPaid + "');"; 
    System.out.print(sqlInsert); 
    Connection conn = ConnectionFactory.ConnectDB(); 
    try{ 
     Statement statement = conn.createStatement(); 
     statement.executeUpdate(sqlInsert); 
    } 
    catch(SQLException e){ 
    } 
} 

接続クラス

 public static Connection ConnectDB(){ 
    try{ 
    Class.forName("org.sqlite.JDBC"); 
    Connection con = DriverManager.getConnection("jdbc:sqlite:kahuyq.db"); 
    return con; 
    } catch (HeadlessException | ClassNotFoundException | SQLException ex){ JOptionPane.showMessageDialog(null, ex); } 
    return null; 

} 

印刷されたクエリをsqliteマネージャにコピーすると、行が追加されますが、javaからはエラーなしでプログラムが終了しますが、テーブルに行は追加されません。 どうしたのですか?

good_codeがテーブルgoodに存在し、2列だけがidgood_codeであることを確認する他の方法もあります(存在しない場合)。このメソッドには、GoodsInputコンストラクタからアクセスします。コンストラクタからメソッドを削除すると、もう一方のメソッドは正常に動作します。ここで はその方法である

public static void insertGoods(Good g){ 
    String sqlSelect = "Select * from good where good_code = '" 
      + g.getGood_code() + "'" ; 
    String sqlInsert = "INSERT INTO good (good_code)" 
      + "VALUES ('" + g.getGood_code() +"')"; 
    Connection conn = ConnectionFactory.ConnectDB(); 
    try{ 
     Statement statement = conn.createStatement(); 
     ResultSet rs = statement.executeQuery(sqlSelect); 


     while(!rs.next()){ 
      statement.executeUpdate(sqlInsert); 
      break; 
     } 

    } 
    catch(SQLException e){ 
    } 
} 
+0

間違いはありますか?接続はどのように構築されていますか? – Lokesh

+0

エラーなし、接続はこの方法で構築されます。public static Connection ConnectDB(){ try { Class.forName( "org.sqlite.JDBC"); 接続con = DriverManager.getConnection( "jdbc:sqlite:kahuyq.db"); return con; } catch(HeadlessException | ClassNotFoundException | SQLException ex){ JOptionPane.showMessageDialog(null、ex); } return null; } – Sargis

+0

接続が正常に機能していますか? –

答えて

0

は、あなたの文の実行後に

conn.commit(); 

を追加してください。

+0

それは1行を追加しますが、同じオブジェクトを追加するために繰り返しても追加されません。テーブルの列に何か問題がありますか? – Sargis

+0

エラーがありますか?あなたのテーブルの主キーは何ですか? 追加するたびにコミットしたのですか? –

+0

私はエラーはありません、PKはautoincrementでin_idですが、私はコミットをしていませんでしたが、@Florian Hucが書いたときに私はすべてのメソッドの実行が終了するように追加しました。私は私の接続を閉じていません。それは問題になることができますか? – Sargis