2012-05-15 2 views
0

iv создал программу, которая отлично работает с MySQL. Однако, когда я конвертирую его в SQLlite, все работает так, как создание таблиц, getConnection() в базе данных и такие EXCEPT, вставляющие значения в таблицу? Мне не удается вставить значение в таблицу с помощью Java (Netbeans) в базу данных SQLite. Я могу вставить только одну строку, но не несколько строк? В MySQL я мог вставлять сразу несколько строк, однако я не могу использовать SQLite?Java - MySQL -> SQLite - невозможно вставить в базу данных SQLite с помощью java

Код (Это работает только одна строка):

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

Если я что-то вроде этого (не работает более чем в одной строке - не имеют ни малейшего представления о why- 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, он отлично работает для ВСЕ. Но, в JAVA с SQLite, я могу по какой-то причине обновить только одну строку? Однако Java с MySQL работает нормально, но не SQLlite.

Любой может прояснить, что я делаю неправильно, будет блестящим. Спасибо, что прочитали это и свое время.

+0

Большое спасибо за быстрые ответы :). – Aaqib

ответ

0

Вставка нескольких строк не является стандартной в соответствии со стандартом SQL92.

SQLite поддерживает его с версии 3.7.11.

Если у вас есть версия под этим, вам нужно сделать одну вставку для каждой строки ...

+0

О, и я уверен, что я загрузил последнюю версию sqlite, но в любом случае большое спасибо за ваш быстрый ответ. – Aaqib

2

Вполне возможно, что драйвер JDBC SQLite не поддерживает синтаксис мульти-вставки. Этот синтаксис также не является стандартным, хотя многие базы данных его поддерживают.

Другим вариантом для выполнения нескольких вставок, подобных этому, является использование механизма дозирования 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-совместимыми базами данных.

+0

Спасибо, что я попытаюсь дать эту попытку tommorow и, надеюсь, все идет хорошо спасибо :) – Aaqib

+0

Я забыл добавить - я добавил свои значения ', однако, он не работал. Я иду с подготовленным заявлением, как указано «joev». Большое спасибо за помощь – Aaqib

Смежные вопросы