Java-SQLite Web服务返回Blob

Java-SQLite Web服务返回Blob,java,web-services,sqlite,blob,Java,Web Services,Sqlite,Blob,我有一个JavaWeb服务,它正在查询包含blob数据的SQLite数据库。我返回sql语句,这样服务的使用者就可以在不处理数据的情况下插入/更新/删除。我的问题是,当我获取blob数据时,sqlite jdbc驱动程序说getBlob函数没有实现。那么我的问题是这可行吗?是否有更好的驱动程序或方法来完成此任务 谢谢 SQLite支持BLOB数据类型。不支持ResultSet#getBlob()方法,但支持Blob。只需使用ResultSet#getBytes()方法。下面是示例代码(我没有在代

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


谢谢

SQLite支持BLOB数据类型。不支持ResultSet#getBlob()方法,但支持Blob。只需使用ResultSet#getBytes()方法。下面是示例代码(我没有在代码中添加适当的异常处理来简化它):


SQLite支持BLOB数据类型。不支持ResultSet#getBlob()方法,但支持Blob。只需使用ResultSet#getBytes()方法。下面是示例代码(我没有在代码中添加适当的异常处理来简化它):


我使用的是getBytes()方法,但是它以NULL结尾,因此我只获取少量数据。你知道有哪个sqlite驱动程序支持这个函数,这样我就可以得到blob的长度了吗?嗨,Erik,我不知道你是怎么把空值放入blob的。这在Java中是不可能的(因为在这种情况下会得到NullPointerException)。你有一些不同语言的程序吗?我想我必须用不同的方式来处理这个问题。谢谢你抽出时间来,哈克耶!我使用的是getBytes()方法,但是它以NULL结尾,因此我只获取少量数据。你知道有哪个sqlite驱动程序支持这个函数,这样我就可以得到blob的长度了吗?嗨,Erik,我不知道你是怎么把空值放入blob的。这在Java中是不可能的(因为在这种情况下会得到NullPointerException)。你有一些不同语言的程序吗?我想我必须用不同的方式来处理这个问题。谢谢你抽出时间来,哈克耶!
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;
}

}