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