OriginalGriff
Это говорит - довольно ясно - что движок JET DB не установлен на компьютере (и вы, вероятно, не должны использовать JET в любом случае, он был заменен ACE много лет назад и никогда не будет доступен в 64-битной версии).
Но это не самая худшая из ваших ошибок: никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.
Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.
Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?
Member 13999803
Система Импорта
Система Импорта.Сведения
Импорт System.Net
Система Импорта.ИО
Публичный Класс SendMsg
Public Shared connectionURL As String = String.Пустой
Общие имя пользователя, строка = строка.Пустой
Общедоступный общий пароль в виде String = String.Пустой
Общие тип как String = строка.Пустой
Public Shared dlr As String = строка.Пустой
Общедоступный общий источник в виде String = String.Пустой
Public Shared CompleteURL As String = String.Пустой
Public Shared HistPath As String = String.Пустой
Общие Состояния, Как Класс Httpwebresponse
"'<резюме>
"Инициализировать connectionURL
''' 0
"'<param name="URI">
"<замечания>
Общие суб SetURL(Ури бывал в строку, как строку ссылку бывал, бывал pswd как струна, бывал тп, как струна, бывал дл как струна, бывал src как струна, histp бывал в строку)
connectionURL = URI
имя пользователя = ссылку
пароль = pswd
тип = tp
dlr = dl
источник = src
HistPath = histp
Конец Подводной Лодки
"'<резюме>
''' посылка сообщения
'''
"'<param name="Dest">
"'<param name="msg">
"<замечания>
Общие суб StartMsgSend(бывал Дест как струна, бывал Сообщение Как строку)
'Dim SourceStream As System.IO.Stream
'Дим файл myrequest как системы.Нет.Запросы WebRequest = Запросы WebRequest.Создать(connectionURL)
- моя просьба.Учетные Данные = CredentialCache.Свойство defaultcredentials
'Дим метода webresponse как метода webresponse = файл myrequest.Творческий
'SourceStream = webResponse.GetResponseStream()
'Дим читателя, что streamreader = Новый Поток streamreader(метода webresponse.GetResponseStream())
CompleteURL = connectionURL + "?имя пользователя=" + логин + "&усилителя;пароль=" + пароль + "&амп;тип=" + тип + "&амп;длр=" + ЭБР + "&амп;пунктом=" &амп; приемник &усилитель; amp; "&Источник=" + Источник + "&амп;сообщение=" &амп; глутамат натрия &амп; ""
"CompleteURL = connectionURL + "?loginID=" + логин + "&усилителя;пароль=" + пароль + "&амп;мобильного=" &амп; приемник &усилитель; amp; "&амп;текст=" &амп; глутамат натрия &ампер; "&амп;senderid=" + источник + "&амп;route_id=" + тип + "&амп;Юникод=" + ЭБР + ""
Попробуй
'Создает HttpWebRequest с указанным URL-адресом.
Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(CompleteURL), HttpWebRequest)
- Посылает запрос и ждет ответа.
Дим myHttpWebResponse как класс httpwebresponse = ctype для(myHttpWebRequest.Метод GetResponse(), Класс Httpwebresponse)
Состояния = myHttpWebResponse
Если myHttpWebResponse.StatusCode = HttpStatusCode.Тогда ладно
writexcel(Dest, msg, "S", myHttpWebResponse.Описание состояния.Метод toString)
Еще
writexcel(Dest, msg, "E", myHttpWebResponse.Описание состояния.Метод toString)
Конец, Если
- Высвободите ресурсы ответа.
myHttpWebResponse.Закрывать()
Поймать е в качестве исключения webexception
writexcel(Dest, msg, "E", e.Message)
Catch e как исключение
writexcel(Dest, msg, "E", e.Message)
Конец Попытки
Конец Подводной Лодки
Общие суб writexcel(пунктом бывал в строку, как строку messg бывал, бывал тип как String, errormsg бывал в строку)
Попробуй
Dim MyConnection As System.Data.Oledb для.Метод oledbconnection
Dim myCommand как новая система.Data.Oledb для.Объект oledbcommand
Dim sql как строка
MyConnection = Новая Система.Data.Oledb для.Метод oledbconnection("поставщик=Майкрософт.Туз.Oledb для.4.0;Источник Данных='" + HistPath + "Message_History.xls\'; Расширенные Свойства=В Excel 8.0;")
MyConnection.Открыть()
моя команда.Соединение = MyConnection
Если (тип = "S"), то
среда SQL = "вставить в [успех$] значения('" &амп; назначения &ампер; "','" &амп; messg &ампер; "','" &амп; errormsg &ампер; "','" & система.значение datetime.Сейчас & "')"
Еще
sql = "вставить