无法读取用其他语言编写的SQLite数据库

时间:2011-02-08 20:57:05

标签: java sqlite

我有一个在python中创建的SQLite3数据库。默认情况下,它以Unicode编写数据库。

现在我尝试使用SQLite JDBC在Java Applet中查询数据库。而且我找不到表格,行等等,因为我认为用ANSI进行Java& /或JDBC查询。

有谁知道如何用Java中的unicode查询查询我的SQLite3数据库?类似下面的内容不起作用(在Java中尝试执行Unicode SQL查询):

如果我在python中访问数据库,我可以打印出表格没问题&更新,但如果我尝试在Java中执行相同操作,我的查询不会返回任何结果。这是编码问题还是其他问题

这适用于导入sqlite3

def blah(): 
    conn = sqlite3.connect( "a.db" )
    cur = conn.cursor()
    res = cur.execute( "SELECT name FROM sqlite_master WHERE type='table'" ).fetchal()
    print res  

blah()

当它返回与上面相同的表时,它不返回表

Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:a.db");
Statement stat  = conn.createStatement(); 
conn.setAutoCommit(false);
ResultSet tables = stat.executeQuery("SELECT name FROM sqlite_master WHERE type='table'");
String b = "";  

while (tables.next())  {   b+= "table= " + tables.getString("name");       } 

2 个答案:

答案 0 :(得分:1)

吉姆,这很奇怪,应该有用。您是否尝试从控制台打开数据库? 你可以通过运行 sqlite3 a.db

打开它 引起我兴趣的是,你正在尝试从java applet打开数据库。你有没有给它必要的权限并签名,所以苹果实际上可以写入磁盘?

答案 1 :(得分:0)

让您疲惫不堪,打开sqlite3 a.db并输入PRAGMA encoding;?它应该默认为UTF8。

我能够在命令行上创建一个UTF8 sqlite数据库,并使用sqlite jdbc读取该文件的内容。

您确定要连接到使用python创建的数据库吗?如果数据库不存在,则sqlite将创建数据库,并且其中不包含任何表。这可能是你发生的事情。

您是否在同一目录中运行java和python?