如何从文本框中将特殊字符串插入到SQL表格中(特殊字符如' s,"或类似♥♫)..?

时间:2014-03-30 16:28:32

标签: c# sql .net

string sql = "insert into tblmain values('" + txtName.Text + "','" + txtPost.Text + "','" + DropDownList1.SelectedItem + "')";

如果用户在txtPost中插入My name's first later is D !,则会出现' s不允许的错误。 你可以把代码发给我,从.net(C#)中的文本框接受这种类型的字符。

1 个答案:

答案 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帖子了解详情。