簡體   English   中英

Java - SQLite Web 服務返回 Blob

[英]Java - SQLite Web Service Returning Blob

我有一個 Java Web 服務,它正在查詢包含 blob 數據的 SQLite 數據庫。 我正在返回 sql 語句,以便服務的消費者可以直接插入/更新/刪除而不處理數據。 我的問題是當我獲得 blob 數據時,sqlite-jdbc 驅動程序說 getBlob 函數沒有實現。 所以我的問題是這可行嗎? 是否有更好的驅動程序或方法來完成此任務?

謝謝!

SQLite 支持 BLOB 數據類型。 Sqlitejdbc 驅動程序不支持 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;
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM