powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Параметры в запросе.....
4 сообщений из 4, страница 1 из 1
Параметры в запросе.....
    #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
Параметры в запросе.....
    #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
Параметры в запросе.....
    #32068853
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>потому что при использовании вышеуказанного кода данные вставляются не в виде символов , а в виде цифр.
Это ты как определил? В поле varchar2 записались (без ошибки ?!!!) данные и ты считаешь что это число? Почему?
В Делфи (за АДО не скажу, а в DOA точно) необходимо определять ТИП параметра.
>Где вставить одиночные кавычки при использовании параметров?
Никаких кавычек не надо.
...
Рейтинг: 0 / 0
Параметры в запросе.....
    #32070219
pusrg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По моему здесь свои грабли вставляет ADO, параметры через него передаются как Variant и преобразовывает он переменную записываемую в параметр по своему разумению :(

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

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


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