2014-09-15 5 views
0

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

Из учебных пособий в Интернете Я только что разработал то, что делаю, но мне это не очень понятно. Теперь я пытаюсь создать метод, который может принимать имя таблицы и набор строк и добавлять их в таблицу.

У меня возникли 2 проблемы:

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

Во-вторых, я не могу понять, как передать строки в таблицу, поскольку данные, которые должны быть отправлены в таблицу, находятся внутри оператора SQL и не распознают строку Java.

Ниже приведен метод до сих пор:

public static void Insert(Table table, String id, String name, String age, String address, String salary) { 
    Connection c = null; 
    Statement stmt = null; 

    try { 
     Class.forName("org.sqlite.JDBC"); 
     c = DriverManager.getConnection("jdbc:sqlite:test.db"); 
     c.setAutoCommit(false); 
     System.out.println("Opened database successfully"); 

     stmt = c.createStatement(); 
     String sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " 
       + "VALUES (1, 'Paul', 32, 'California', 20000.00);"; 
     //I want this to write the strings passed in by the method, and to the table passed in by the method 
     stmt.executeUpdate(sql); 
     stmt.close(); 
     c.commit(); 
     c.close(); 
    } catch (Exception e) { 
     System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
     System.exit(0); 
    } 
    System.out.println("Records created successfully"); 
} 

ответ

0

Используйте подготовленное заявление вместо CreateStatement следующим образом:

PreparedStatement stmt = c.prepareStatement 
     ("insert into COMPANY values(?,?,?,?,?)"); 
     stmt.setInt(1,1); 
     stmt.setString(2,"Paul"); 
     stmt.setInt(3,32); 
     stmt.setString(4, "California"); 
     stmt.setBigDecimal(5, 20000.00); 
     stmt.executeUpdate(); 

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

String insert_string = "insert into" + Table + "values, etc, etc" 
+0

что делают (?,?,?) Представляют? Я пробовал («вставлять в значения КОМПАНИИ (ID, НАЗВАНИЕ, ВОЗРАСТ, АДРЕС, ОЦЕНКУ)»); но это дает мне ошибку – 2014-09-15 10:36:24

+1

The? являются заполнителями. После того, как вы установите setInt после этого, он установит значение в соответствующий setXX – CocoNess

+1

. Вышеприведенный код будет вставлять данные в столбцы базы данных в порядке, установленном по умолчанию, в котором была создана база данных. Нет необходимости указывать имена столбцов, если они не различаются от значения по умолчанию – CocoNess

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