Вопрос № 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 и др. вьизивают ошибки.
Отвечает: 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