2016-06-15 64 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) = ?;");