Java 如何在不锁定数据库的情况下向数据库中发出多个SQL查询?
我正在尝试将记录从First\u servlet.java插入到SQLite数据库中,以Second\u servlet.java。以下是我的代码: 第一个servlet.java Second_servlet.java 每当我运行servlet时,我的日志中总是出现以下错误:Java 如何在不锁定数据库的情况下向数据库中发出多个SQL查询?,java,sqlite,servlets,jdbc,Java,Sqlite,Servlets,Jdbc,我正在尝试将记录从First\u servlet.java插入到SQLite数据库中,以Second\u servlet.java。以下是我的代码: 第一个servlet.java Second_servlet.java 每当我运行servlet时,我的日志中总是出现以下错误: java.sql.SQLException: [SQLITE_BUSY] The database file is locked (database is locked) at abhishek.Details.doG
java.sql.SQLException: [SQLITE_BUSY] The database file is locked (database is locked)
at abhishek.Details.doGet(Details.java:50)
为什么锁上了?如何解决此问题?嗨,检查可能会有帮助。嗨,检查可能会有帮助。
public class Second_servlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] ck=request.getCookies();
PrintWriter pw=response.getWriter();
try {
Class.forName("org.sqlite.JDBC");
Connection c=DriverManager.getConnection("jdbc:sqlite:D:\\storage.db");
if (c!=null) {
System.out.println("Database created successfully");
Statement st=c.createStatement();
st.execute("CREATE TABLE IF NOT EXISTS Details ( ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME VARCHAR(30), EMAIL VARCHAR(30), AGE INTEGER)");
PreparedStatement p=c.prepareStatement("INSERT INTO Details(ID,NAME,EMAIL,AGE) VALUES(?,?,?,?)");
if (ck==null)
pw.println("No cookies found");
else {
for(Cookie cookie: ck) {
if(cookie.getName().equals("name")) {
p.setInt(1,1);
p.setString(2,cookie.getValue());
}
else if(cookie.getName().equals("email"))
p.setString(3,cookie.getValue());
else if(cookie.getName().equals("age"))
p.setString(4,cookie.getValue());
}
int i=p.executeUpdate();
pw.println(i+"records inserted");
c.close();
}
}
else
System.out.println("Please try again");
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java.sql.SQLException: [SQLITE_BUSY] The database file is locked (database is locked)
at abhishek.Details.doGet(Details.java:50)