Sql Server 2005插入查询中的单引号和双引号

本文关键字:单引号 Server 2005 插入 查询 Sql | 更新日期: 2023-09-27 18:14:20

地址文本框中有单引号和双引号。我如何插入数据库?我正在使用SQL2005。我的代码如下…

str = "exec sp_cust_reg '" + customer.Cust_Id + "','" + customer.Cust_Name + "','" + customer.Gender + "','" + customer.Acc_no + "','" + customer.Address + "','" + customer.Pin_no + "','" + customer.Phone_no + "','" + customer.Mobile_no + "','" + customer.Email + "','" + customer.Authorise + "'";

地址是约翰的家

它的文本可视化器如下…

exec sp_cust_reg 'C7','George Joseph','Male','0001-212123','jo"hn's house','515151','04862787896','8888888888','johnyqw@gmail.com','N'

我用

string sql = str.Replace("''", " ");.

得到

exec sp_cust_reg  C7 , George Joseph , Male , 0001-212123 , jo"hn s house , 515151 , 04862787896 , 8888888888 , johnyqw@gmail.com , N 

Sql Server 2005插入查询中的单引号和双引号

一句话:不要这么做!

使用参数化查询来代替-这些都更安全(没有SQL注入),更容易使用,性能也更好!

SqlCommand cmd = new SqlCommand("dbo.sp_cust_reg", _connection);
cmd.CommandType = CommandType.StoredProcedure;
// add parameters and their values
cmd.Parameters.Add("@CustID", SqlDbType.Int).Value = customer.Cust_Id;
cmd.Parameters.Add("@Cust_Name", SqlDbType.VarChar, 100).Value = customer.Cust_Name;
 ..... and so on - define all the parameters!
_connection.Open();
cmd.ExecuteNonQuery();
_connection.Close();

您还可以使用参数化查询用于提供值,使用参数的AddWithValue(),如

SqlCommand cmd = new SqlCommand("dbo.sp_cust_reg",_connection);
cmd.CommandType= CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@TheDate",customer.Cust_Id);
cmd.Parameters.AddWithValue("@Cust_Name",customer.Cust_Name);
_connection.Open();
cmd.ExecuteNonQuery();
_connection.Close();

为什么我告诉使用AddWithValue是-你显式地设置了sqldb。

'转义为''

str.Replace("'", "''")代替str.Replace("''", " ")