0

ivは、MySQLで非常にうまく機能するプログラムを作成しました。ただし、SQLliteに変換すると、テーブルの作成、データベースへのgetConnection()など、テーブルへの値の挿入を除いてすべてが機能しますか?Java(Netbeans)を使用してSQLiteデータベースに値をテーブルに挿入できません。1行しか挿入できませんが、複数行は挿入できませんか?MySQLでは、一度に複数の行を挿入できましたが、SQLiteでは挿入できませんか?

コードは次のとおりです(これは1行でのみ機能します):

       Connection con;
       Statement s= con.CreateStatement();
       String st = "Insert into table1 (10,'abc')";
       s.executeUpdate(st);
       s.close();

私がこのようなことをした場合(複数の行では機能しません-理由はわかりません-SQLite):

         Connection con;
         Statement s= con.CreateStatement();
         String st = "Insert into table1 (10,'abc'), (5,'vfvdv')"; //now it doesnt    work since Im inserting more than one row. I can't figure out what Im doing wrong - 
         //Iv also tried Insert into table1(ID, Name) values (10,'abc'), (5,'afb'); but it dont work.
        s.executeUpdate(st);
        s.close();

Javaの専門家や誰かがこれについて私を助けてくれますか?'SQLite'コマンドラインにコマンドを入力すると、ALLに対して正常に機能するため、Imが間違っていることなどを理解できません。しかし、SQLiteを使用したJAVAでは、何らかの理由で1行しか更新できませんか?ただし、MySQLを使用したJavaは正常に機能しますが、SQLliteは機能しません。

誰もがImが間違っていることを明確にすることができます。これとあなたの時間を読んでくれてありがとう。

4

2 に答える 2

2

SQLite JDBC ドライバーが複数挿入構文をサポートしていない可能性があります。この構文も標準ではありませんが、多くのデータベースでサポートされています。

このような複数の挿入を行うための別のオプションは、PreparedStatement のバッチ処理メカニズムを使用することです。

Connection conn = ....;
PreparedStatement stmt = 
  conn.prepareStatement("INSERT INTO table1(id, name) VALUES (?, ?)");

stmt.setInt(1, 10);
stmt.setString(2, "abc");
stmt.addBatch();

stmt.setInt(1, 5);
stmt.setString(2, "vfvdv");
stmt.addBatch();

stmt.executeBatch();

通常、ここで示したように展開するのではなく、setInt、setString、addBatch シーケンスをループで使用し、ループの後で executeBatch を呼び出します。これは、すべての JDBC 準拠のデータベースで機能します。

于 2012-05-15T01:44:38.420 に答える
0

SQL92 標準によると、複数行の挿入は標準ではありません。

SQLite はバージョン 3.7.11 以降でサポートしています。

このバージョンの下にバージョンがある場合は、行ごとに 1 つの挿入を行う必要があります...

于 2012-05-15T01:43:18.750 に答える