Ошибка преобразования из MySQL в SQLite - PullRequest
0 голосов
/ 03 октября 2011

Не было особых проблем, но я получаю сообщение об ошибке от пользователя, нажимающего кнопку.

Первоначально в MySQL это было значение enum ('Y', 'N'), но поскольку SQLite не использует перечисления или логические значения, я решил использовать int с 1 и 0 соответственно.

Как это можно решить?

if(e.getSource()==boughtB){
    String cigName;
    cigName = Habanos2.selection;
    String humiString;
    int humino;

    Connection con = null;
    System.out.println(cigName);

    try{
        ResultSet humiRS1 = HabMenu.getGenericRS("select * from cigar where name = '"+cigName+"'"); 
        if(humiRS1.next()){
            humiString = humiRS1.getString("humi_no");

            humino = Integer.parseInt(humiString);
            System.out.println("humino"+humino);

            Class.forName("org.sqlite.JDBC").newInstance();

            con = DriverManager.getConnection("jdbc:sqlite:cigardb.db");
            Statement s = con.createStatement();
            humino++;
            String humiNoS = Integer.toString(humino);
            s.executeUpdate("update cigar set humi = 1 where name ='"+cigName+"'" );
            s.executeUpdate("update cigar set humi_no = "+humiNoS+"where name ='"+cigName+"'");

            Habanos2Frame.myHumi.setText("");
            ResultSet humiii = HabMenu.getGenericRS("select * from cigar where humi = 1");

Выдает эту ошибку:

java.sql.SQLException: база данных заблокирована на org.sqlite.DB.execute (DB.java:270) на org.sqlite.DB.executeUpdate (DB.java:281) mysql humi error humiNoS = на org.sqlite.Stmt.executeUpdate (Stmt.java:103) at cigarDiary.buttonBar $ ButtonHandler.actionPerformed (buttonBar.java:207) в javax.swing.AbstractButton.fireActionPerformed (Неизвестный источник) at javax.swing.AbstractButton $ Handler.actionPerformed (Неизвестный источник) at javax.swing.DefaultButtonModel.fireActionPerformed (неизвестный источник)

1 Ответ

1 голос
/ 05 октября 2011

Хорошо, как я решил это, закрыв каждый ResultSet (rs.close) и Connection (con.close) после того, как я закончил его использовать. Это то, что MySql, кажется, не возражает, но SQLite делает. Это не позволит вам выполнить обновление, пока набор результатов и его соединение все еще открыты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...