Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Параметры в запросе..... / 4 сообщений из 4, страница 1 из 1
18.11.2002, 10:28
    #32068837
Кирилл_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры в запросе.....
Уважаемые коллеги есть вопрос о правильности написания кода в Delphi.
Есть текстовый файл, из него выбирается кусок и кладется в базу.
Фрагмент кода:
c3:=Copy(stlist ,5,15);
ADOCommand1.CommandText:= 'INSERT INTO table(Col1)VALUES (:c3)';
Поле col1 в базе ORACLE имеет тип varchar2
Заносимые данные имеют вид 1234 или 5463, в общем набор цифр.
По всем правилам SQL данный запрос должен выглядеть так:
'INSERT INTO table(Col1)VALUES ('данные')',
А как в Delphi написать это с использованием параметров , потому что при использовании вышеуказанного кода данные вставляются не в виде символов , а в виде цифр.
Где вставить одиночные кавычки при использовании параметров?
Зараннее спасибо ?
...
Рейтинг: 0 / 0
18.11.2002, 10:58
    #32068852
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры в запросе.....
Во-первых, естественно, что c3 должен иметь тип строковый. Из твоего описания непонятно какого типа.
Во-вторых, я не знаю как в делфи, но в java например, для каждого типа есть свой метод, я думаю что и делфи должно быть по такому принипу:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
..........
 private String query1 =  "select report_serial, name, reportfile, securitylevel, uses from reports where name = ?" ;
..................

    PreparedStatement pstmt = con.prepareStatemen(query1);
    pstmt.setString( 1 ,p_name);
    ResultSet res = pstmt.executeQuery();


Если бы я хотел передать параметр числового типа тогда так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
..........
 private String query2 =  "select report_serial, name, reportfile, securitylevel, uses from reports where report_serial = ?" ;
..................

    PreparedStatement pstmt = con.prepareStatemen(query2);
    pstmt.setInt( 1 ,p_serial);
    ResultSet res = pstmt.executeQuery();
...
Рейтинг: 0 / 0
18.11.2002, 10:59
    #32068853
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры в запросе.....
>потому что при использовании вышеуказанного кода данные вставляются не в виде символов , а в виде цифр.
Это ты как определил? В поле varchar2 записались (без ошибки ?!!!) данные и ты считаешь что это число? Почему?
В Делфи (за АДО не скажу, а в DOA точно) необходимо определять ТИП параметра.
>Где вставить одиночные кавычки при использовании параметров?
Никаких кавычек не надо.
...
Рейтинг: 0 / 0
20.11.2002, 15:29
    #32070219
pusrg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметры в запросе.....
По моему здесь свои грабли вставляет ADO, параметры через него передаются как Variant и преобразовывает он переменную записываемую в параметр по своему разумению :(

Если бы обращение к БД шло через БДЕ или ОДАК, то можно было бы написать:

DataSet.FindParam('c3').AsString:='1234';
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Параметры в запросе..... / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]