2016-06-15 67 views
0

这里是我的SQLite表如何使用jdbc在java中准备语句读取sqlite文本列?

CREATE TABLE hello ( 
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    import_data text, 
    export_data text 
); 

这里是我的Java代码

Connection sqliteConnection = DriverManager.getConnection(db); 
PreparedStatement preparedStatement = sqliteConnection.prepareStatement("select * from hello where export_data = ?;"); 
preparedStatement.setString(1, "ABD19E3C63"); // hex string 
    ResultSet resultSet = preparedStatement.executeQuery(); 
    resultSet.next(); 
    importData = resultSet.getString("import_data"); 
    System.out.println(importData); // prints nothing although I checked in the sqlite database that it exists. 

所以IMPORTDATA打印什么,尽管我可以在它存在的SQLite数据库看到。不知道为什么?

SQLite的查询

select hex(import_data) from hello where hex(export_data)="ABD19E3C63"; // This works 

上面的查询工作在SQLite的,虽然我宣布两列文本

+0

您是否尝试直接从SQLite运行此确切查询? –

+0

是的。我只是在我的问题上加了这个。 – user1870400

+0

我对你的数据集并不熟悉,但是如果查询不能在SQLIite中工作,那么它在调用SQLite的Java中可能不起作用。 –

回答

-1

您应该使用循环声明如下所示。

while (resultSet.next()) { 
    String import_data= resultSet.getString("import_data"); 
    System.out.println("Import_data"+import_data); 
} 
+0

我只是想获得第一行 – user1870400

+0

只需使用resultSet.first() –

+0

返回一个布尔值 – user1870400

0

你应该试试这个吗?

PreparedStatement preparedStatement = sqliteConnection.prepareStatement("select * from hello where hex(export_data) = ?;");