2016-08-23 3 views
-2
package application; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public abstract class Query { 

    private static final String DRIVER_CLASSNAME = "org.sqlite.JDBC"; 
    private static final String PASSWORD = ""; 
    private static final String USERNAME = ""; 

    protected static String base = "data/pezalDB"; 
    private static String JDBC_URL = "jdbc:sqlite:" + base + ".db"; 

    protected static Connection connection; 
    protected static Statement statement; 
    public static ResultSet resultSet; 

    public static void connectToDatabase() throws ClassNotFoundException, SQLException { 
     Class.forName(DRIVER_CLASSNAME); 
     connection = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD); 
    } 

    public static void executeSql(String sql) throws SQLException { 

     statement = connection.createStatement(); 
     resultSet = statement.executeQuery(sql); 
    } 

    public static void close() throws SQLException { 
     resultSet.close(); 
     statement.close(); 
     connection.close(); 
    } 

} 

public class TableDB { 

    private int id; 
    private String namePL; 
    private String nameEN; 

    public TableDB(String namePL, String nameEN) { 
     this.namePL = namePL; 
     this.nameEN = nameEN; 
    } 
} 

public class QueryMethods extends Query { 

    static String table = "dictionary"; 
    static String sql; 

    public static void addValue() { 
     try { 
      connectToDatabase(); 

      sql = "UPDATE dictionary SET namePL = 'QWE' WHERE id = 2"; 

      executeSql(sql); 
      close(); 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 

     addValue(); 

    } 
} 

У меня есть проблема:JAVA обновление базы - неправильно

java.sql.SQLException: query does not return ResultSet 
    at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:85) 
    at application.QueryMethods.addValue(QueryMethods.java:18) 
    at application.TestQuery.main(TestQuery.java:10) 

Что не так? Когда я читаю из базы данных, все в порядке, но большая функция неправильная.

Не работает Обновление и установка ....................................... .................................................. .................................................. .................................................. .................................................. ..

+0

Можете ли вы предоставить запрос SQL, пожалуйста? Я предполагаю, что там есть проблема. Возможно, вы не выполнили инструкцию SELECT, а скорее update/insert. Это объяснит это. – sagneta

ответ

4

Вы пытаетесь выполнить инструкцию SQL UPDATE с помощью метода executeQuery(). executeQuery() не может принимать операторы, которые обновляют базу данных, например UPDATE, INSERT или DELETE. Заменить эту строку следующим образом:

int rowsUpdated = statement.executeUpdate(sql); 
Смежные вопросы