Ошибка синтаксиса OleDbException при вставке Statment

статическая строка connStrCheckData = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + Server.MapPath ("test.xlsx") + "; Extended Properties = Excel 12.0;";

статическая строка oledbConnCheckData = new OleDbConnection (connStrCheckData);

string adsName = "MagMall.com - экономия на подписке на 1000 журналов";

OleDbCommand cmd = новый OleDbCommand (); cmd.CommandType = CommandType.Text; cmd.CommandText = "вставить в [лист1 $] ([столбец1]) значения ('" + adsName.ToString (). Trim () + "')"; cmd.Connection = oledbConnCheckData;

        oledbConnCheckData.Open();

        cmd.ExecuteNonQuery();

        oledbConnCheckData.Close();

Ошибка: синтаксическая ошибка (отсутствует оператор) в выражении запроса «MagMall.com - экономия на подписке на 1000 журналов») ».

Выше появляется ошибка, когда я пытался вставить слово «MagMall.com - экономия на подписке на 1000 журналов».


person Shailesh    schedule 23.03.2012    source источник


Ответы (2)


Как сказал Юрген, вам нужно избежать единственного апострофа, добавив еще один: 1000 (не \ '). Двойное апострофирование - это правильный способ передать утверждение.

person Eddie Paz    schedule 23.03.2012

Вы должны избежать ' в 1,000's вот так 1,000\'s

person juergen d    schedule 23.03.2012
comment
Можно поставить дефис - порождает любую проблему. И значение adsName меняется каждый раз в цикле, тогда как я могу применить escape в переменной. - person Shailesh; 23.03.2012
comment
Мне понравилось adsName.ToString (). Trim (). Replace (', \'), но по-прежнему выдает ошибку. - person Shailesh; 23.03.2012
comment
@Shailesh: Попробуйте adsName.ToString().Trim().Replace("'", "\\'") - person juergen d; 23.03.2012