网上看到使用 pragma encoding=utf16le; 命令,但是不知道具体在 java 中如何使用,试了如下的代码,也没有成功 :(,只能在这里跪求高手指点了。
public class SqliteTest {
public static void main(String[] args) {
// 加载驱动
deleteFile("c:/test.db");
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
System.out.println("数据库驱动未找到!");
}
// 得到连接 会在你所填写的目录建一个你命名的文件数据库
Connection conn;
try {
conn = DriverManager.getConnection("jdbc:sqlite:c:/test.db",null,null);
// 设置自动提交为false
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
stmt.executeUpdate("PRAGMA encoding = \"UTF-16le\";");
//判断表是否存在
ResultSet rsTables = conn.getMetaData().getTables(null, null, "city", null);
stmt.executeUpdate("PRAGMA encoding = \"UTF-16le\";");
if(rsTables.next()){
System.out.println("表存在,创建表的事情不要做了");
} else {
stmt.executeUpdate("create table city (id,name);");
}
stmt.executeUpdate("insert into city values (1,'上海');");
stmt.executeUpdate("insert into city values (2,'北京');");
stmt.executeUpdate("insert into city values (3,'广州');");
// 提交
conn.commit();
// 得到结果集
ResultSet rs = stmt.executeQuery("select * from city;");
while (rs.next()) {
System.out.println("id = " + rs.getString("id"));
System.out.println("name = " + rs.getString("name"));
}
rs.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("SQL异常!");
}
}
}