string query = string.Format(@"if not exists(select id from user_detail where id_str = '" + args.Tweet.CreatedBy.IdStr + "') begin insert into user_detail(id_str,screen_name,user_name,createdate,hashtag,imageurl,message,unique_id,tweet_id)values('" + args.Tweet.CreatedBy.IdStr + "',N'" + args.Tweet.CreatedBy.ScreenName.Replace("'", "`") + "', N'" + args.Tweet.CreatedBy.Name.Replace("'", "`") + "','" + args.Tweet.CreatedAt + "',N'" + Hashtag + "',N'" + Convert.ToString() + "',N'" + args.Tweet.Text.Replace("'", "`") + "','" + Guid.NewGuid().ToString() + "','" + args.Tweet.IdStr + "') end else begin update user_detail set screen_name=N'" + args.Tweet.CreatedBy.ScreenName + "' where id_str = '" + args.Tweet.CreatedBy.IdStr + "' end");
1
A
回答
3
永不連接輸入來創建SQL。它會傷害你,傷害你並傷害你。如果您使用參數,則所有轉義問題將消失,與文化信息相關的問題以及SQL注入的風險也會消失。這也意味着您不需要通過將'
更改爲反標(儘管實際上有逃避單引號的方式)來破壞人們的數據。
參數化
例如:
const string query = @"
if not exists(select id from user_detail where id_str = @idstr)
begin
insert into user_detail(id_str,screen_name,user_name,createdate,hashtag,imageurl,message,unique_id,tweet_id)
values(@idstr, @screenName, /*...*/)
end
else
begin
update user_detail set screen_name= @screenName
-- ...
end";
有很多做的實際執行方式。例如與原始ADO.NET:
using(var cmd = conn.CreateCommand()) {
cmd.CommandText = query;
cmd.Parameters.AddWithValue("idstr", idstr);
cmd.Parameters.AddWithValue("screenName", screenName);
// ...
cmd.ExecuteNonQuery();
}
或「短小精悍」:
conn.Execute(query, new { idstr, screenName, /* ... */ });
在所有情況下,...
表示這裏我省略了額外的東西讓你填在(該however-許多列/參數/等描述你的數據)。
+0
因爲我們想要做的 –
+0
@jeyajj片刻...編輯... –
相關問題
- 1. 輸入字符串格式不正確。 C#錯誤SQL數據庫
- 2. 獲取錯誤「輸入字符串格式不正確。」在SelectParameters
- 3. 輸入字符串格式不正確
- 4. 輸入字符串格式不正確
- 5. 輸入字符串格式不正確
- 6. 輸入字符串格式不正確
- 7. 輸入字符串格式不正確
- 8. 輸入字符串格式不正確
- 9. 輸入字符串格式不正確
- 10. 輸入字符串格式不正確
- 11. 輸入字符串格式不正確
- 12. 輸入字符串格式不正確
- 13. 輸入字符串格式不正確
- 14. 輸入字符串格式不正確
- 15. 「輸入字符串格式不正確」
- 16. 輸入字符串格式不正確
- 17. 「輸入字符串格式不正確。」
- 18. 輸入字符串格式不正確
- 19. 輸入字符串格式不正確
- 20. 輸入字符串格式不正確
- 21. 輸入字符串格式不正確
- 22. 輸入字符串格式不正確。
- 23. 輸入字符串格式不正確
- 24. 輸入字符串格式不正確
- 25. 輸入字符串格式不正確
- 26. 輸入字符串格式不正確?
- 27. 輸入字符串格式不正確?
- 28. DataGridView_RowHeaderMouseClick事件顯示錯誤輸入字符串的不正確的格式
- 29. 輸入字符串格式不正確。但是我沒有字符串數據
- 30. iTextSharp輸入字符串的格式不正確css錯誤
將最終的sql字符串賦值給本地的'string sql = ...',然後調試並檢查字符串 –
在'SqlCommand'中使用'.Parameters.AddWithValue(「@」)參數化查詢是個好主意。 ColumnName「,」Value「);'否則你可能容易受到SQL注入 – Vladimir