java.sql.SQLException: ошибка логики SQL или отсутствующая база данных, SQLite, JDBC - PullRequest
1 голос
/ 16 марта 2010

Я создал соединение с базой данных SQLite, используя JDBC в Java. Мои операторы SQL выполняются правильно, но иногда я получаю следующую ошибку при использовании conn.commit():

java.sql.SQLException: SQL logic error or missing database

Может кто-нибудь, пожалуйста, помогите мне, как избежать этого типа проблемы. Есть ли лучший способ вызова программ JDBC?

Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:/home/Data/database.db3");
conn.setAutoCommit(false);

String query = "Update Chits set BlockedForChit = 0 where ServerChitID = '" + serverChitId + "' AND ChitGatewayID = '" + chitGatewayId + "'";
        Statement stmt = conn.createStatement();
        try {
            stmt.execute(query);
            conn.commit();
            stmt.close();
            stmt = null;
        }

1 Ответ

2 голосов
/ 16 марта 2010

Могут ли ваши переменные serverChitId & chitGatewayId содержать символы, которые повредят SQL? Обычно безопаснее использовать PreparedStatements:

PreparedStatement ps = conn.prepareStatement("Update Chits set BlockedForChit = 0 where ServerChitID = ? AND ChitGatewayID = ?");
ps.setString(1, serverChitId);
ps.setString(2, chitGatewayId);
ps.executeUpdate();

Таким образом, драйвер JDBC отвечает за то, чтобы обеспечить необходимые экранирования для строк.

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