РЕДАКТИРОВАТЬ: Как упоминал Юзеф в одном ответе,? не следует помещать между строковым литералом "%?%", поэтому добавьте% к строковому параметру, прежде чем он будет задан в запросе. В вашем sql-запросе нет параметра ...
заменить запрос на
String sql = "SELECT * FROM user where userName LIKE ?"
? это параметр, где будет установлена ваша строка.
где строка будет похожа на "%"+inputString+"%";
http://support.microsoft.com/kb/257819 содержит утверждение о том, что такое поведение может быть неизбежным при вставке текста в Excel через ADO:
A предостережение при редактировании данных Excel с помощью ADO : при вставке текстовых данных в Excel с помощью ADO текстовому значению предшествует одинарная кавычка. Это может позже вызвать проблемы при работе с новыми данными.
Являются ли данные явно текстовыми, могут ли они быть приведены в числовой формат? (хватается за соломинку ...)
Не могли бы вы просто использовать Excel DSN? Это кажется довольно вездесущим. Я не знаю .NET, так что возьмите это с крошкой соли, но вот моя строка подключения для OLEDB-запроса прямо из таблицы запасов:
"Provider=MSDASQL.1;Persist Security Info=True;Extended Properties
=""DSN=Excel Files;DBQ=" & filePath & "\" & fileName &
";DriverId=1046;MaxBufferSize=2048;PageTimeout=5;"""
И я использовал этот базовый оператор INSERT:
INSERT INTO rngOutput VALUES (1, 'ABC', '$1.00', 1300)
Когда я это сделал У меня не было апострофов в моем диапазоне данных. Я также использую Excel 2007 и вижу, что вы используете Excel 8.0 в качестве драйвера?
Надеюсь, это подтолкнет вас к решению!
Я знаю, что при вводе данных в Excel префикс с апострофом - простой способ превратить их в текст поле. Вы уверены, что данные на самом деле не содержат апостроф? Если он добавляется к данным во время ввода, единственным вариантом будет перехватывать их во время импорта и работать с ними в каком-то пользовательском коде.
Проверьте сопротивление Hkey_Local_Machine / Программное обеспечение / Microsoft / Jet / 4.0 / Engines / Excel / TypeGuessRows
Это решает, сколько строк должно быть отсканировано, прежде чем выбрать формат для столбца. По умолчанию установлено значение 8, и 0 заставит ADO сканировать все значения столбцов, прежде чем выбрать соответствующий тип данных.
Это может не соответствовать вашим требованиям, особенно если вам нужно настроить форматирование на листе Excel, но вы рассматривали возможность записи данных в файл CSV и сохранения их с расширением .XLS
Еще одна вещь, которую вы могли бы попробовать, это явно установить типы данных форматирования ваших целевых ячеек на листе Excel, чтобы ввести «Текст» (как в «Формат> Ячейки в Excel»), прежде чем пытаться загрузить данные. По умолчанию ячейки будут иметь тип «Общие», и драйвер может добавлять апостроф, чтобы заставить ваши данные отображаться в тексте.
Попробуйте следующий прием для решения проблемы. Измените шаблон в соответствии с инструкциями
Теперь запустите вставку скрипт с использованием ADO.net
-Venkat Kolla
Вставьте несколько фиктивных значений для столбцов, которые имеют апостроф в файле шаблона. Скажем, для столбца Name вставьте что-то вроде этого dummyname, а для столбца age - 99. Вместо того, чтобы вставлять новую строку в шаблон, просто обновите строку (Update..... where Name = 'dummyname' and age =99).
Это сработало для меня...
Надеюсь, это сработает и для вас!