Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 255
от 13.12.2006, 23:35

Администратор:CJ
В рассылке:Подписчиков: 285, Экспертов: 29
В номере:Вопросов: 2, Ответов: 2


Вопрос № 66038: Здравствуйте! Скажите пожалуйста как через ZQuery (Zeos ver 6.1.5) записать в BLOB поле болшой двоичной буфер. Я пишу (приложение) но символьи #0, #10, #13 и др. вьизивают ошибки. ..
Вопрос № 66089: Здравствуйте, уважаемые Эксперты! Долго искал ответ на свой вопрос, но что-то неправильно его "вписываю" в поисковики - не смог найти ответа, может Вы знаете? Вопрос: Есть база MSSQL (версию точно не знаю кажется 2000) исп...

Вопрос № 66.038
Здравствуйте!
Скажите пожалуйста как через ZQuery (Zeos ver 6.1.5) записать в BLOB поле болшой двоичной буфер.
Я пишу (приложение) но символьи #0, #10, #13 и др. вьизивают ошибки.

Приложение:

Отправлен: 08.12.2006, 02:44
Вопрос задал: Bochvarov NikB (статус: 10-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Bochvarov NikB!
Вам надо было текст ошибки в вопросе привести.
Если судить по тому что Вы написали, то движок БД просто не понимает, что Вы от него пытаетесь добиться вот этим:
'1234'#0#1#10#13'abc'
Обычно, если строка состоит из нескольких отдельных частей, то эти части между собой соединяют знаком "+", а у Вас получилось, что символы #0#1#10#13 к строке никоим образом не относятся.
Лучше всего Вам будет писать строку запроса отдельно, а вносить ее в SQL.Text отдельно, тогда Вы сразу будете видеть где у Вас ошибка. Вот для примера:
Const
ins = 'INSERT INTO tbl_name (Data) VALUES ('; {Это начало SQL оператора}
Var
q1: string; {Здесь будет собираться строка запроса из всевозможных переменных, констант и функций}
Begin
...
q1:=Ins+QUotedStr('1234'+#0+#10+#13+'abc')+')';
ZQuery.SQL.Text:=q1;
...
End;
Согласитесь, чем короче строчка команды, тем больше шансов увидеть неправильность, т.к. глаза не будут в ужасе по строке разбегаться. :)
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 08.12.2006, 15:13


Вопрос № 66.089
Здравствуйте, уважаемые Эксперты!

Долго искал ответ на свой вопрос, но что-то неправильно его "вписываю" в поисковики - не смог найти ответа, может Вы знаете?

Вопрос: Есть база MSSQL (версию точно не знаю кажется 2000) использую TADOConnection (Delphi5). В случае если сети нет приложение "подвисает" на 15 секунд пытаясь соединиться :( не смотря на выставленные таймауты по 1с. Есть мысль, чтобы этого "зависания" избежать как то сначала проверить - а работает ли компьютер с базой? А еще лучше - работает ли там база?

P.S.
Мои размышления - можно сделать через пинг (подключить WinSock, проект чуть раздуется результат будет через 2 сек). Но работает ли база??? И файрволом может быть закрыт пинг :(. Но ведь MSSQL почти наверняка "сидит" на каком то порту и должен отвечать приложениям что он работает?
Отправлен: 08.12.2006, 12:22
Вопрос задал: LanK (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, LanK!
Попробуйте такую функцию проверки соединения. В свое время я ее раскопал на сайте http://delphiworld.narod.ru/
uses
ComObj;

function OpenConnection(ConnectionString: String): Boolean;
var
ADODBConnection: OleVariant;
begin
ADODBConnection := CreateOleObject('ADODB.Connection');
ADODBConnection.CursorLocation := 3;
ADODBConnection.ConnectionString := ConnectionString;
ADODBConnection.ConnectionTimeout := 3; {Три секунды на соединение}
Result := True;
try
ADODBConnection.Open;
except
Result := False;
end;
If Result Then
ADODBConnection.Close;
end;
Здесь:
- ConnectionString - это сформированная Вами строка подключения к БД.
Если функция возвращает True - подключение прошло успешно, если False, то подключится не удалось.
Хочу заметить, что если в процессе работы Вам не нужна визуализация данных, например нужно передать в БД команду на модификацию данных в какой-то таблице, то такой способ подключения к БД работает быстрее, чем использование VCL.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 08.12.2006, 19:55


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное