исключение при вставке одинарной кавычки в c # - PullRequest
1 голос
/ 27 мая 2011

Я столкнулся с проблемой.когда я вставляю одинарную кавычку в текстовое поле.при вставке это дает исключение неправильного синтаксиса рядом с этим конкретным полем.почему это?Одинарная ли кавычка имеет особое значение для sqlserver?

что если пользователь что-то вводит, например, слово not, это так, или когда-то по ошибке вводят одинарную кавычку в начале, тогда это исключение.есть ли соль, чтобы справиться с этим?если у одинарной кавычки есть проблема с sqlserver .. тогда как с этим бороться?

Ответы [ 5 ]

9 голосов
/ 27 мая 2011

используйте SqlParameter вместо конкатенации строк

Этот тип выражений является наихудшей вещью, которую вы можете сделать в своем коде, потому что сначала у вас возникнут проблемы с преобразованием типов данных, а во-вторыхДвери Sql Injection - это опция для хакеров

string someQuery = "Select * from SomeTbl Where SomeTbl.SomeColumn = '" + tbSomeBox.Text+ "'" ;

Вместо этого просто используйте это

string someQuery = "Select * from SomeTbl Where SomeTbl.SomeColumn = @param";
SqlCommand someCommand = new SqlCommand(someQuery, conn);
someCommand.AddParams("@param",tbSomeBox.Text);
...

Надеюсь, это поможет

6 голосов
/ 27 мая 2011

Строки SQL Server заключены (обычно) в одинарные кавычки, поэтому одинарная кавычка в строке приведет к ошибке, если вы не экранируете ее до того, как она будет вставлена.

Одиночные кавычки просто необходимо удвоить, поэтому строка Will''s World приведет к Will's World попаданию в данные.

0 голосов
/ 27 мая 2011
using (System.Data.SqlClient.SqlConnection con = new SqlConnection("YourConnection string")) { 
    con.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    string expression = "(newsequentiali'd())"; 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.CommandText = "Your Stored Procedure"; 
    cmd.Parameters.Add("Your Parameter Name", 
                SqlDbType.VarChar).Value = expression;    
    cmd.Connection = con; 
    using (IDataReader dr = cmd.ExecuteReader()) 
    { 
        if (dr.Read()) 
        { 
        } 
    } 
}
0 голосов
/ 27 мая 2011

В SqlServer, если вы хотите вставить строку с кавычками, используйте кавычки дважды до и после строки. Например, вы хотите вставить 'Hello', поэтому вставьте его как '''Hello''', если поле, в которое вы хотите вставить, имеет строковый тип данных, например varchar и т. Д.

0 голосов
/ 27 мая 2011

Вам потребуется экранировать одинарные кавычки в операторах SQL.

Например:

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