2013-08-27 1 views
0

Я хочу вставить специальный символ в базу данных sqlserver 2008. например, ('/ @ # & * $) и т. д.вставить специальный символ в базу данных SQL Server 2008 из C#

Я пробовал следующий код, но удалял эту строку из строки orignal.

string[] arrtime = postingtime.Split(','); 
          string sss = arrtime[1]; 
          string sss1 = "EDT"; 
          bool first2 = true; 
          string s33 = Regex.Replace(sss, sss1, (m) => 
          { 
           if (first2) 
           { 
            first2 = false; 
            return ""; 
           } 

           return sss1; 

          }); 

Но я не хотел, чтобы удалить эти строки из Orignal строки ... потому что я хочу, чтобы вставить данные языка Franch и удаление этих особого характера изменит смысл предложения.

моя вставка запроса:

cn.Open(); 
     adp.InsertCommand = new SqlCommand("insert into ttt values('r=DE'S''C/pa-ge=1/[email protected]')", cn); 
     adp.InsertCommand.ExecuteNonQuery(); 
     cn.Close(); 

, когда я нажимаю на кнопку вставки, то он дает ошибку (ошибка типа данных). моя проблема в том, чтобы вставить строку со специальными символами, чтобы не удалить этот символ. Я хочу передать эти символы на наш SQL Server 2008 из приложения C#. спасибо заранее

+2

Вот что вы получите не использовать parameteried запросов. –

ответ

3

Использование параметризованных запросов, как это:

using (SqlConnection cn = new SqlConnection(...)) 
{ 
    cn.Open(); 

    using (SqlCommand cmd = new SqlCommand("insert into ttt values (@testvalue)", cn)) 
    { 
     cmd.Parameters.AddWithValue("@testValue", "r=DE'S'[email protected]§$%"); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

он дает следующую ошибку ... Строковые или двоичные данные будут усечены. Заявление было прекращено. Я использовал nvarchar() на стороне sqlserver .... но все же ошибка. – user2499974

+0

Ну, сколько времени в базе данных? –

+1

@ user2499974 ну, что ** точно ** это тип столбца, который вы используете? Основываясь на данных, он должен быть как минимум 'nvarchar (16)' –

1

Ваш запрос Insert vunlerable инъекциям SQL .. Попробуйте использовать SqlParameters. и в типе данных пользователя SQL Server Server NVarchar.

using (SqlConnection con = new SqlConnection(dc.Con)) 
      { 
       using (SqlCommand cmd = new SqlCommand("insert into ttt values(@paramValue)", con)) 
       { 

        cmd.Parameters.AddWithValue("@paramValue", "r=DE'S'[email protected]§$%"); 
        con.Open(); 
        cmd.ExecuteNonQuery(); 
       } 

      } 
2

Используйте параметры

adp.InsertCommand = new SqlCommand("insert into ttt values(@p1)", cn); 
adp.InsertCommand.Parameters.Add(new SqlParameter("@p1", SqlDbType.NVarChar)).Value = "r=DE'S''C/pa-ge=1/[email protected]"; 
+0

дает следующую ошибку .... [Строковые или двоичные данные будут усечены. Заявление было прекращено]. – user2499974

+0

увеличьте размер столбца примерно так: 'NVARCHAR (MAX)' – Damith

+0

вы полный обряд ... thanx ... я дам вам голос – user2499974

Смежные вопросы