TVi*_*cky 0 c# sql sql-server asp.net
我有一个asp.net项目,我在保存数据时遇到错误.我有一个学校名称的文本框,大多数学校名称都被保存但如果我有学校名称像St.Xavier's,它会产生一个问题执行插入查询.这是因为文本中存在单引号.因此,我得到的最终查询是:
Insert Into tblSchool(SchoolName, CreatedBy, CreatedOn)
values('St.Xavier's',1,'2014-6-13 13:14:16')
Run Code Online (Sandbox Code Playgroud)
如何在文本中使用单引号保存数据?我正在使用Microsoft SQL Server 2005.
您没有显示您的代码,但我强烈怀疑您有以下代码:
// Bad code!
String sql = "Insert Into tblSchool(SchoolName, CreatedBy, CreatedOn) "
+ "values('" + name + "'," + creator + ",'" + date +"')";
Run Code Online (Sandbox Code Playgroud)
不要那样做.它很难阅读,在转换方面容易出错,而且容易受到SQL注入攻击.
相反,您应该使用参数化SQL.就像是:
String sql = "Insert Into tblSchool(SchoolName, CreatedBy, CreatedOn) "
+ "values(@Name, @CreatedBy, @CreatedOn)";
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.Add("@Name", SqlDbType.VarChar).Value = name;
command.Parameters.Add("@CreatedBy", SqlDbType.Int).Value = creator;
command.Parameters.Add("@CreatedOn", SqlDbType.DateTime).Value = date;
int results = command.ExecuteNonQuery();
...
}
Run Code Online (Sandbox Code Playgroud)
有关SqlCommand.Parameters详细信息,请参阅文档.
| 归档时间: |
|
| 查看次数: |
1042 次 |
| 最近记录: |