问题描述
我正在调用此方法:
1=string=K
2=string=O
3=string=Y
4=string=A
5=string=A
6=string=N
7=string=I
8=string=S
9=string=Q
10=string=A
11=string=T
12=string=S
13=string=I
一切正常执行,但似乎我的数据库仍然处于锁定状态,没有明显的原因。
另一方面,如果我要用此方法替换数据库,则在执行数据库之后就可以了:
ArrayList<String> selectFilteredJump(String owner,String fromDate,String toDate,String env) {
ArrayList<String> a = new ArrayList<>();
Connection c;
Statement stmt;
StringBuilder whereClause = new StringBuilder("WHERE a.Date BETWEEN '"+fromDate+ "' and '" + toDate+"'");
if (!env.equals(constants.EMPTY) ) {
whereClause.append(" and a.Environment = '").append(env).append("'");
}
if (!owner.equals(constants.EMPTY) ) {
whereClause.append(" and a.UserId = '").append(owner).append("'");
}
String sql = "SELECT a.TicketID,a.Subject,a.UserID,a.Date,a.Solution,a.Comments," +
"a.Environment,(SELECT UserName FROM Users WHERE UserID = a.UserID) AS UserName FROM Tickets a " +
whereClause + " order by 4 asc;";
System.out.println(sql);
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:" + this.dbPath + this.dbName) ;
c.setAutoCommit(false);
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
a.add(rs.getString("TicketID"));
a.add(rs.getString("Subject"));
a.add(rs.getString("UserID"));
a.add(rs.getString("Date"));
a.add(rs.getString("Solution"));
a.add(rs.getString("Comments"));
a.add(rs.getString("Environment"));
a.add(rs.getString("UserName"));
}
rs.close();
stmt.close();
c.close();
}
catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return a;
}
我也尝试过使用特定的配置打开连接(像这样):
ArrayList<String> selectAllJump() {
if (constants.DEBUG_MODE) System.out.println("selectAllJump");
ArrayList<String> a = new ArrayList<>();
Connection c;
Statement stmt;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:" + this.dbPath + this.dbName);
c.setAutoCommit(false);
stmt = c.createStatement();
ResultSet rs = stmt.executeQuery("SELECT a.TicketID," +
"a.Environment,(SELECT UserName FROM Users WHERE UserID = a.UserID) AS UserName FROM Tickets a " +
"order by 4 asc;");
while (rs.next()) {
a.add(rs.getString("TicketID"));
a.add(rs.getString("Subject"));
a.add(rs.getString("UserID"));
a.add(rs.getString("Date"));
a.add(rs.getString("Solution"));
a.add(rs.getString("Comments"));
a.add(rs.getString("Environment"));
a.add(rs.getString("UserName"));
}
rs.close();
stmt.close();
c.close();
}
catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return a;
}
,仍然是相同的错误:
org.sqlite.SQLiteException:[SQLITE_BUSY]数据库文件已锁定(数据库已锁定)
欢迎任何想法。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)