private void Save_rec_Click(object sender, EventArgs e)
{
string pattern = ("[\\s]+");
string input = firstname.Text;
string replacement = "_";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
msg.Text = result;
cmd = new SqlCeCommand("create table " + result + "(id int, first_name nVarChar(100))", con);
cmd.ExecuteNonQuery();
cmd = new SqlCeCommand("insert into '"+ result +"' values(1,'" + firstname.Text + "')", con);
cmd.ExecuteNonQuery();
}
回答
這是更多的評論,但有太多要解決的空間只允許評論。首先,誰是這個代碼的最終用戶?它純粹是內部的,嚴格限制?因爲你正在接觸SQL Injection攻擊。
也就是說,它看起來執行你想要的操作(創建一個表,然後在表中插入一行),你必須使用動態SQL,因爲你正在做上面的事情,要注意的是在將其包含在SQL字符串中之前,您必須清理掉firstname.Text
。另外,對於insert
字符串,您應該使用[
和]
而不是'
和'
括起表名。
注意:要考慮的一件重要事情就是你要完成的事情。對於之後的任何事情,我都無法想象一個場景,其中N個用於N個名字輸入的單行表是一個好設計。
我認爲他不能工作的代碼是因爲他創建了一個有2列的表格,但只能插入1列數據。也許他打算讓id成爲IDENTITY專欄?我同意你的評估。這個架構不好。 – AndrewR 2013-03-10 18:33:58
@AndrewR他爲他的'id'列插入靜態1,爲他的'first_name'列插入SQL注入易受攻擊的'firstname.Text',所以他的語法沒問題。但是,語法之外還有很多問題。 – 2013-03-10 18:37:00
正則表達式實際上是用一個下劃線替換多個連續的空格(空格,製表符,換行符)。使用'Replace('','_')'只會替換空格,如果一行中有多個空格,你會得到多個下劃線而不是一個下劃線。 – juharr 2013-03-10 18:48:22
人們無法經常這麼說,尤其是因爲它在.NET中相當簡單。 只需使用下面的SqlCommand參數即可防止SQL注入發生:
string strUserInput = TextBox1.Text;
SqlCommand sqlComm = new SqlCommand();
sqlComm.CommandText = "SELECT SomeColumn FROM Table WHERE Name = @ParamName";
SqlParameter param = cmd.Parameters.Add("@ParamName", strUserInput);
- 1. 如何通過sql查詢返回字符串值?
- 2. 如何通過查詢字符串URL
- 3. 如何通過字符串名稱設置defineProperty的值?
- 4. 如何通過包含部分字符串的組件名稱查詢組件
- 5. 如何通過名稱在mongoid上查詢字段?
- 6. 如何通過IronMQ令牌通過查詢字符串
- 7. 如何通過Google表格中的字符串長度查詢
- 8. 按字符串名稱查詢?
- 9. 提取列名和表名從任何「SQL查詢」字符串
- 10. SQL - 通過查詢結果創建名稱爲
- 11. 如果沒有查詢字符串,是否可以跳過HttpHandler?
- 12. 如何通過查詢字符串參數的ActionLink在MVC
- 13. LINQ to SQL如何通過字段名稱獲取值
- 14. 如何通過Swift中的字符串更改按鈕名稱?
- 15. 如何通過名稱引用從XML獲取字符串?
- 16. 如何從一個字符串名稱通過配置
- 17. 如何通過字符串名稱訪問struct屬性?
- 18. 如何使用htaccess的通過舊域名新域名的查詢字符串
- 19. 如何通過字符串名稱,如「的usermodel」創建列表<UserModel>
- 20. 如何在Android中通過字符串值查找資源字符串?
- 21. 如何通過sql查詢選擇某個表的MySQL引擎名稱?
- 22. 動態查詢:如何在SQL-Server中定義表名或其他字符串
- 23. 如何在Ruby on Rails中通過請求保留查詢字符串值?
- 24. Swift/Objective C:如何通過字符串名稱獲取對象的值
- 25. LINQ to SQL通過投影字符串選擇屬性名稱
- 26. MySQL查找結果是查詢字符串的子字符串
- 27. SQL Server 2005 - 通過參數查詢表的名稱
- 28. 如何將查詢結果值插入常量字符串?
- 29. SQL過程添加字符串查詢
- 30. 如何檢查列的數值是否包含通過SQL查詢的字母
你在插入語句中有問題嗎? – Sachin 2013-03-10 18:12:07
這不是一個問題。 – AndrewR 2013-03-10 18:31:07