Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中使用jdbc准备语句读取sqlite文本列?_Java_Sqlite_Jdbc - Fatal编程技术网

如何在java中使用jdbc准备语句读取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

这是我的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中工作,尽管我将两列都声明为文本

您应该像下面那样使用循环语句

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);在执行查询之前。