2017-10-17 2 views
1

Haben SQLite Tabelle good_in mit Spalten namens in_id, good_code, in_group, in_quantity, in_VATPaidSQLite java Abfrage einfügen nicht in Tabelle

Hier ist meine Tabelle Beispiel enter image description here

und hat Methode Aufzeichnungen in sie einfügen

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){ 
    } 
} 

Verbindungsklasse

Wenn ich die gedruckte Abfrage in den SQLite Manager kopiere, fügt sie die Zeile hinzu, aber von Java beendet sie das Programm ohne Fehler, fügt aber keine Zeile zu meiner Tabelle hinzu. Was ist los?

haben auch andere Verfahren, das Wetter überprüft die good_code in Tabelle existiert good die id und good_code nur 2 Spalten haben, und wenn nicht vorhanden fügt es. Auf diese Methode wird von GoodsInput Konstruktor zugegriffen. Wenn ich die Methode aus dem Konstruktor lösche, funktioniert die andere Methode einwandfrei. Hier ist das Verfahren

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

gibt es einen Fehler? Wie wird die Verbindung aufgebaut? – Lokesh

+0

Kein Fehler, Verbindung ist auf diese Weise aufgebaut öffentliche statische Verbindung ConnectDB() { try { Class.forName ("org.sqlite.JDBC"); Verbindung con = DriverManager.getConnection ("jdbc: sqlite: kahuyq.db"); Rückkehr con; } catch (HeadlessException | ClassNotFoundException | SQLException ex) { JOptionPane.showMessageDialog (null, ex); } Rückgabewert null; } – Sargis

+0

Sind Sie sicher, dass die Verbindung funktioniert? –

Antwort

0

Try

conn.commit(); 

nach der Ausführung Ihrer Anweisung hinzuzufügen.

+0

es fügt eine Zeile hinzu, aber wenn ich wiederhole, um das gleiche Objekt hinzuzufügen, fügt es nicht hinzu. Vielleicht stimmt etwas mit Tabellenspalten nicht? – Sargis

+0

Haben Sie einen Fehler? Was ist der Primärschlüssel Ihrer Tabelle? Haben Sie nach jeder Hinzufügung einen Commit ausgeführt oder einen nach dem anderen? –

+0

Ich habe keinen Fehler, PK ist in_id mit Autoincrement, ich hatte keine Commit gemacht, aber wenn @Florian Huc schrieb, fügte ich es am Ende der Ausführung in jeder Methode. Und ich habe meine Verbindung nicht geschlossen. Kann es sein? – Sargis

Verwandte Themen