如何在java中使用jdbc准备语句读取sqlite文本列?
这是我的sqlite表如何在java中使用jdbc准备语句读取sqlite文本列?,java,sqlite,jdbc,Java,Sqlite,Jdbc,这是我的sqlite表 CREATE TABLE hello ( id INTEGER PRIMARY KEY AUTOINCREMENT, import_data text, export_data text ); 这是我的java代码 Connection sqliteConnection = DriverManager.getConnection(db); PreparedStatement preparedStatement = sqliteConne
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中工作,尽管我将两列都声明为文本您应该像下面那样使用循环语句
while (resultSet.next()) {
String import_data= resultSet.getString("import_data");
System.out.println("Import_data"+import_data);
}
你应该试试这个吗
PreparedStatement preparedStatement = sqliteConnection.prepareStatement("select * from hello where hex(export_data) = ?;");
您是否尝试直接从SQLite运行这个精确的查询?是的。我只是在我的问题中加了这个我不熟悉你的数据集,但是,如果查询在SQLIite中不起作用,那么它可能在调用SQLite的Java中不起作用。它在SQLite中起作用可能您没有阅读注释。我可以看到您在SQLite中的查询语句与您在代码中的语句不同。我只想获取第一行。只需使用返回布尔OK的resultSet.first()即可,添加此代码preparedStatement.setMaxRows(1);在执行查询之前。