无法使用jdbc:sqlite :: resource将记录/数据保存到SQLite数据库:

时间:2018-11-25 03:01:57

标签: java sqlite jdbc

我使用SQLITEStudio创建了一个数据库,并将其保存到我的项目文件夹中。 数据库名称为ThirftersDataBase.db,具有表accHistory和列“ user”和“ password”。 当我使用Select查询时,该连接有效,但是当我尝试插入数据时,该连接不起作用。请帮忙。

这是我的数据库类。

package db.Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;



public class databaseConnection {

    static Connection con = getConnection();
    static String user;

    public static Connection getConnection(){
        String url = "jdbc:sqlite::resource:ThirftersDataBase.db";
        try {
            con = DriverManager.getConnection(url);
            System.out.println("connected");
            return con;
        } catch (SQLException e) {

            e.printStackTrace();
        }
        return null;
    }

    public void logIN(String user, String pass) {

        String sql = "Insert or replace into accHistory(user, password) VALUES (?, ?)";
        PreparedStatement st;

        try {
            st = con.prepareStatement(sql);
            st.setString(1, user);
            st.setString(2, pass);
            st.executeUpdate();


            //Check if query is executed;
            System.out.println("Saved");
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}

我有一个带有按钮的FXML控制器,单击该按钮将保存数据。

public class ThriftersController{

    databaseConnection connect = new databaseConnection();

    public void Save(ActionEvent e) {
         //Save "Mark" to user column and save "1234456" to password column
        connect.logIN("Mark", "1234456");
    }
}

当我单击按钮时,按钮事件得到了很好的处理,它将打印“已保存”,但不会保存在数据库中。

1 个答案:

答案 0 :(得分:1)

通过jdbc:sqlite::resource:的数据库连接是只读的,如here所述:

  

读取类路径或网络中的数据库文件(只读)

     

要加载可从类加载器中找到的db文件(例如,类路径中jar文件中的db文件),请使用jdbc:sqlite::resource:前缀。

如果要更新数据库,则需要将其放在其他位置。