Одиночные и двойные кавычки в запросе вставки Sql Server 2005 - PullRequest
0 голосов
/ 14 ноября 2011

В адресном текстовом поле есть одинарные и двойные кавычки. Как я могу вставить в базу данных.Я использую 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 + "'";

Адрес - это дом jo 'hn

Текстовый визуализатор выглядит следующим образом ...

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 

Ответы [ 3 ]

8 голосов
/ 14 ноября 2011

Одно слово: НЕ ДЕЛАЙТЕ ЭТОГО!

Используйте взамен параметризованных запросов - они оба безопаснее (без внедрения 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();
1 голос
/ 14 ноября 2011

Вы также можете использовать Параметризованные запросы для предоставления значений, используя 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.type и SQL точно знают dbtype при передаче.

0 голосов
/ 14 ноября 2011

Вы бежите ' как ''.

Поэтому вместо str.Replace("\'", " ") используйте str.Replace("'", "''")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...