SQLDataSource参数插入:消毒和格式化

时间:2013-01-26 02:34:52

标签: asp.net sql

我正在构建一个Web应用程序,我想允许用户将记录插入数据库。我遇到的方法是从文本框中获取信息并运行以下代码:

SqlDataSource1.InsertParameters["ProductCode"].DefaultValue = txtProductCode.Text;
SqlDataSource1.InsertParameters["Name"].DefaultValue = txtName.Text;
SqlDataSource1.InsertParameters["Version"].DefaultValue = txtVersion.Text;
SqlDataSource1.InsertParameters["ReleaseDate"].DefaultValue = txtReleaseDate.Text;
try
{
    SQLDataSource1.Insert();
}
...

如果我尝试注入一些SQL,我会收到错误消息:

  

消息:字符串或二进制数据将被截断。声明已经终止。

此方法是否清理参数?我很难找到这些信息,因为我不确定是否还有办法解决这个错误。如果不是,我应该如何消毒输入?

此外,ReleaseDate参数似乎当前正在读取为dd / MM / yyyy但有一种方法可以锁定它,以便不同系统上的相同代码的行为不同。我担心如果代码在具有不同区域设置的系统上运行,它将使用不同的格式。

1 个答案:

答案 0 :(得分:0)

表中的某个字段不足以插入值。您需要检查每个ProductionCode,name,Version和ReleaseDate的长度,并相应地增加它们。

http://msdn.microsoft.com/en-us/library/aa196741(v=sql.80).aspx