2012-05-15 1 views
0

iv는 MySQL과 함께 정말 잘 작동하는 프로그램을 만들었습니다. 그러나 SQLlite로 변환하면 모든 것이 테이블 만들기, getConnection()과 같은 작업을하며 데이터베이스에 값을 삽입하는 것과 같은 예외가 있습니까 ?? SQLite 데이터베이스에 Java (Netbeans)를 사용하여 테이블에 값을 삽입 할 수 없습니다. 단 하나의 행을 삽입 할 수 있지만 여러 행을 삽입 할 수 있습니까? MySQL에서는 한 번에 여러 행을 삽입 할 수 있지만 SQLite에서는 사용할 수 없습니까?자바 - MySQL -> SQLite - 자바를 사용하여 SQLite 데이터베이스에 삽입 할 수 없습니다

코드 (이것은 단지 하나의 행 작동)입니다 : 나는 같은 것을 할 경우

 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(); 

자바 전문가 나 다른 사람이 나를 도울 수 있습니까? 무슨 일이 잘못 됐는지 알아낼 수 없다. 왜냐하면 내가 'SQLite'명령 줄에 명령을 입력하면 ALL에 대해 잘 작동하기 때문이다. 하지만, SQLite와 자바에서, 나는 단지 하나의 행을 어떤 이유로 업데이트 할 수 있습니까? 그러나 Java with MySQL은 정상적으로 작동하지만 SQLlite는 작동하지 않습니다.

누구나 잘못하고있는 것이 무엇일 지 밝힐 수 있습니다. 시간을내어 읽어 주셔서 감사합니다.

+0

빠른 답장을 보내 주셔서 감사합니다 :). – Aaqib

답변

0

다중 행 삽입은 SQL92 표준에 따라 표준이 아닙니다.

SQLite는 버전 3.7.11부터 지원합니다. 이 하나의 아래 버전이있는 경우

, 당신은 ... 각 행에 대해 하나 개의 삽입을해야

+0

오, 케이와 임 확실히 내가 sqlite의 라트 버전을 다운로드했지만 어쨌든 당신의 빠른 답장을위한 많은 감사합니다 – Aaqib

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 호환 데이터베이스에서 작동합니다.

+0

고마워요이 시도 tommorow주고 잘하면 모두가 잘 간다 :) – Aaqib

+0

- 나는 '값을 추가 않았다 '그러나, 그것은 일을 didnt한다. 'joev'가 말한대로 준비된 진술로 진행합니다. 도와 주셔서 감사합니다. – Aaqib

관련 문제