2010-09-09 31 views
0

我有一個手動創建查詢的小程序。在僞代碼,它基本上是這樣的用Java以二進制數據手工構建SQL

string[] a = new string[x];
a[0] = "data 1";
a[1] = "data 2";
a[2] = "data 3";
string query = "insert into x (y) values(";
for i {
query += a[i] + ",";
}
query += ");";

我知道,這種用法是次優的,我應該做在某些時候完全重新編寫完成。
現在我需要添加一些二進制數據到a陣列。
鑑於byte[] b,我該如何將它添加到查詢中?
我還沒有嘗試,但我假設b.toString()或只是query+=b是會腐敗我的數據?

回答

5

不要把它放在SQL開始。使用參數化查詢:它會容易得多,並且不會冒SQL注入攻擊的風險。

+0

我知道,我知道。打電話給我懶惰,但現在我真的想「只是讓它工作」。整個劇本要大得多,將來需要從頭開始重新編寫,但是我真的很想在沒有這個的情況下讓它工作。 – Claes 2010-09-09 12:13:35

+3

@Claes:對參數化查詢做適當的處理可能會比欺騙它來做錯誤的方式更簡單。參數化查詢不難編寫。還要注意,如果你想要*二進制*數據,以字符串開頭並不是一個好主意。 – 2010-09-09 12:14:56

+0

等一下,爲什麼我會提高Jon Skeet?他的名字是不是真的發音爲'Jon Upwards-pointing-orange-arrow-with-a-large-integer-next-to-it'? – 2010-09-09 12:27:56