string sql = "insert into tblmain values('" + txtName.Text + "','" + txtPost.Text + "','" + DropDownList1.SelectedItem + "')";
如果用户在txtPost中插入My name's first later is D !
,则会出现'
s不允许的错误。
你可以把代码发给我,从.net(C#)中的文本框接受这种类型的字符。
答案 0 :(得分:1)
您的样本是最纯粹形式的SQL injection的书籍示例。 '
关闭之前的引用,其余的SQL命令的解释与您的预期不同。
在处理非硬编码值和直接SqlConnection
时,没有理由不使用parametrized queries。
另请查看这些articles了解详情。近似样本(需要更多字段而不显示异常处理):
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand("insert into tblmain values(@name")", connection);
command.Parameters.Add("@name", SqlDbType.String);
command.Parameters["@name"].Value = customerID;
connection.Open();
Int32 rowsAffected = command.ExecuteNonQuery();
Console.WriteLine("RowsAffected: {0}", rowsAffected);
}
您可能遇到的第二个问题是,如果您为文本选择了错误的字段类型 - 能够存储您希望需要Unicode字符串的字符。查看C#: DbType.String versus DbType.AnsiString帖子了解详情。