另外,java对sqlite执行了 insert,update,delete动作后,想要关闭连接,却老是提示:SQLite error: Unable to close due to unfinalised statements 求解答。
网上别人都说要先调用 sqlite3_finalize,但不知道怎么弄!!
我的方案:
解压得到 sqlitejdbc.dll 和 sqlitejdbc.jar
先将.jar文件引用到项目中,方案:在Eclipse左侧的项目如 test1上右键-->Properties --> Java Build Path --> Add External Jars --> 选中刚才的.jar文件--> OK
然后在代码中执行
System.out.println("javaLibrary到底是什么?"+System.getProperties().get("java.library.path").toString());
这会输出所有相关的目录,把 sqlitejdbc.dll 复制到任何一个目录中即可 ,否则会报错:no sqlitejdbc in java.library.path
把sqlite数据库文件(.db) 复制到test1项目的目录下:如果数据库文件位置放置不正确,在执行相关sql语句时会提示找不到**的表
SqliteHelper.java
import java.sql.*;
public class SqliteHelper {
Connection _CONN;
// 取得连接
private boolean GetConn() {
if (_CONN != null)
return true;
try {
String sDriverName = "org.sqlite.JDBC";
String sDBUrl = "jdbc:sqlite:PersonalAddressBook.db";
System.getProperties().get("java.library.path");
Class.forName(sDriverName);
_CONN = DriverManager.getConnection(sDBUrl);
} catch (Exception ex) {
// ex.printStackTrace();
System.out.println(ex.getMessage());
return false;
}
return true;
}
// 关闭连接
private void CloseConn() {
try {
_CONN.close();
_CONN = null;
} catch (Exception ex) {
System.out.println(ex.getMessage());
_CONN = null;
}
}
// 测试连接
public boolean TestConn() {
if (!GetConn())
return false;
CloseConn();
return true;
}
}
testSqlite.java
public class testSqlite {
public static void main(String[] args) {
//System.out.println("javaLibrary到底是什么?"+System.getProperties().get("java.library.path").toString());
SqliteHelper help=new SqliteHelper();
if(help.TestConn())
System.out.println("连接成功");
else
System.out.println("连接失败");
}
}
如果都是OK的,则执行结果为:连接成功!
2,完整的java调用sqlite数据库的例子
SQLite error: Unable to close due to unfinalised statements
执行insert,update,delete之后关闭连接时会出错,等待解决!!