gpt4 book ai didi

Java - SQLite Web 服务返回 Blob

转载 作者:行者123 更新时间:2023-11-29 08:09:26 25 4
gpt4 key购买 nike

我有一个 Java 网络服务正在查询包含 blob 数据的 SQLite 数据库。我正在返回 sql 语句,这样服务的消费者就可以在不处理数据的情况下插入/更新/删除。我的问题是当我获取 blob 数据时,sqlite-jdbc 驱动程序说 getBlob 函数未实现。所以我的问题是这可行吗?是否有更好的驱动程序或方法来完成此任务?

谢谢!

最佳答案

SQLite 支持 BLOB 数据类型。 Sqlitejdbc driver不支持 ResultSet#getBlob() 方法,但支持 BLOB。只需使用 ResultSet#getBytes() 方法。这是示例代码(为了简单起见,我没有在此代码中放置适当的异常处理):

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;

public class SQLiteTest {

public static void main(String[] args) throws SQLException,
ClassNotFoundException {
Class.forName("org.sqlite.JDBC");
Connection connection = DriverManager
.getConnection("jdbc:sqlite:test.db");
Statement statement = connection.createStatement();
createTable(statement);
insertBlob(connection);
byte[] bytes = query(statement);
System.out.println(Arrays.toString(bytes));
statement.close();
connection.close();
}

private static void createTable(Statement statement) throws SQLException {
statement.execute("CREATE TABLE test (data BLOB)");
}

private static void insertBlob(Connection connection) throws SQLException {
PreparedStatement pStatement = connection
.prepareStatement("INSERT INTO test VALUES (?)");
pStatement.setBytes(1, new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
pStatement.execute();
pStatement.close();
}

private static byte[] query(Statement statement) throws SQLException {
ResultSet rs = statement.executeQuery("SELECT data FROM test");
byte[] bytes = rs.getBytes(1);
return bytes;
}

}

关于Java - SQLite Web 服务返回 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9183783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com