我使用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");
}
}
当我单击按钮时,按钮事件得到了很好的处理,它将打印“已保存”,但不会保存在数据库中。
答案 0 :(得分:1)
通过jdbc:sqlite::resource:
的数据库连接是只读的,如here所述:
读取类路径或网络中的数据库文件(只读)
要加载可从类加载器中找到的db文件(例如,类路径中jar文件中的db文件),请使用
jdbc:sqlite::resource:
前缀。
如果要更新数据库,则需要将其放在其他位置。