2012-09-27 38 views
1

我需要在o數據庫中插入一個blob。我正在使用C++和ODBC庫。 我被插入查詢和更新查詢。它是抽象的如何使blob插入查詢。 我知道如何爲非blob列進行查詢。 我的表結構是:在ODBC c + +(oracle)中的空斑點插入查詢

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 

或不過querys這些結構抽象的給我。會員列表應該是什麼?爲什麼會有「?」在哪裏插入值?

回答

1

這些問號表示它是PreparedStatement。這些語句對服務器和客戶端都有好處。服務器的工作量較少,因爲它更容易解析這樣的語句,並且客戶端不需要擔心SQL注入。客戶端準備這樣的查詢,爲輸入值構建緩衝區並調用它。

而且這樣的語句執行非常快相比,「正常」的查詢,特別是在循環,從導入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) 
+0

謝謝。它幫助我。 –