1

OracleデータベースにBLOBを挿入する必要があります。私はc++とODBCライブラリを使用しています。挿入クエリと更新クエリで立ち往生しています。blob挿入クエリの作成方法は抽象的です。非blob列のクエリを作成する方法を知っています。私のテーブル構造は:

REATE TABLE t_testblob (
     filename VARCHAR2(30) DEFAULT NULL NULL,
     apkdata  BLOB         NULL
)

挿入と更新の例を見つけました:

 INSERT INTO table_name VALUES (memberlist,?,memberlist)
 UPDATE table_name SET ImageFieldName = ? WHERE ID=yourId

しかし、これらのクエリの構造または私にとっては抽象的です。メンバーリストはどうあるべきですか?なんで「?」挿入する値はどこにありますか?

4

1 に答える 1

1

これらの疑問符は、それが PreparedStatement であることを意味します。このようなステートメントは、サーバーとクライアントの両方に適しています。そのようなステートメントを解析する方が簡単で、クライアントは SQLInjection について心配する必要がないため、サーバーの作業は少なくなります。クライアントはそのようなクエリを準備し、入力値のバッファを作成して呼び出します。

また、このようなステートメントは、特にループ、csv ファイルからのデータのインポートなどで、「通常の」クエリと比較して非常に高速に実行されます。

ODBCは厳密にCライブラリですが、どのODBC C++ライブラリを使用しているのかわかりません。Java や Python などの他の言語でも使用できます。最も簡単なのはPythonの例だと思います:

cursor = connection.cursor()
for txt in ('a', 'b', 'c'):
    cursor.execute('SELECT * FROM test WHERE txt=?', (txt,)) 

もちろん、そのような PreparedStatement は INSERT または UPDATE ステートメントでも使用できます。例では、次のようになります。

cursor.execute("INSERT INTO t_testblob (filename, apkdata) VALUE (?, ?)", filename, my_binary_data)
于 2012-09-27T09:43:05.237 に答える