2
我試圖使用Npgsql的PostgreSQL客戶端來完成兩件事情:如何避免在Npgsql中使用更新命令進行SQL注入?
- 避免SQL注入,並
- 管理包含單引號'數據
我看不出怎麼辦任:(
PostrgeSQL版本9.1
在下面的代碼,dx.chronic是bool類型2及Ta的cdesc ble dx可能包含單引號,如「湯姆的狗」。顯然,當Npgsql/PostgreSQL遇到單引號時,寫成的UpdateCmd將會失敗。
string sChronic = (dx.chronic == null) ? "null" : dx.chronic.ToString();
string UpdateCmd = "update dx "+
"set chronic = " + sChronic +
" where (trim(lower(cdesc)), trim(cicd9)) = "+
" ('"+dx.description.Trim().ToLower()+"','"+dx.icd9.Trim() +"');";
using (NpgsqlCommand command = new NpgsqlCommand(UpdateCmd, conn))
{
command.Parameters.Add(new NpgsqlParameter("value1", NpgsqlDbType.Text));
command.Parameters[0].Value = "Big Tom's Dog";
....... ? ? ? ? ? ? ? ? ? ? ? ? ? ...................
這是如何完成的?任何幫助最受讚賞。
TIA
參見「準備語句」的[文件](https://github.com/npgsql/npgsql/wiki/User-Manual)。手動編寫查詢字符串非常容易出錯,所以請儘可能避免使用字符串連接插入數據。也嘗試和碰撞你的Postgres版本,9.4增加了很多值得擁有的新功能。 – tadman
@tadman當它是記錄的一部分時,我仍然不知道如何處理單引號,或者它沒有關係?謝謝。 –
擔心引號是你沒有正確轉義的標誌。執行此操作的最佳方法是數據庫驅動程序處理轉義的**準備語句**。 – tadman