powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / параметры в запросе
8 сообщений из 8, страница 1 из 1
параметры в запросе
    #38567435
LeN1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть вот такой запрос к базе данных MySQL
Сайт на ASP

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<%
dim sql, cn, cmdx, x
Set conx = Server.CreateObject("ADODB.Connection") 
conx.Open "DSN=myDSN"


sql = "SELECT xxx,yyy FROM table WHERE id= @p_id"

set cmdx = Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.Recordset") 

cmdx.ActiveConnection = conx
cmdx.CommandText = SQLTITL
cmdx.Parameters.Append(cmdx.CreateParameter("@p_id", adNumeric, adParamInput, , x))

set rs = cmdx.execute
p=rs("xxx") 
%>


На строке p=rs("xxx") выдает вот такую ошибку - BOF или EOF имеет значение True, либо текущая запись удалена. Для выполняемой операции требуется текущая запись.
Запись точно есть, мне кажется что неправильный синтаксис у параметров запроса, т.к. в rs получается ничего нет
...
Рейтинг: 0 / 0
параметры в запросе
    #38567436
LeN1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, что не так?
...
Рейтинг: 0 / 0
параметры в запросе
    #38567448
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeN1,

У этого cmdx нет возможности вывести итоговый запрос после применения параметра?
Я, кстати, вообще в коже не вижу, как из переменной sql текст запроса передается куда-то дальше.
И кто такой SQLTITL ?
...
Рейтинг: 0 / 0
параметры в запросе
    #38567468
LeN1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну пардон не от туда строчку скопировала. Конечно cmdx.CommandText = sql
...
Рейтинг: 0 / 0
параметры в запросе
    #38567782
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeN1,
провайдер может не поддерживать именованные параметры

если поддерживает:
- перед добавлением параметров
Код: vbnet
1.
cmdx.NamedParameters = true


если не поддерживает:
Код: vbnet
1.
sql = "SELECT xxx,yyy FROM table WHERE id= ?"


В любом случае перед созданием параметра
Код: vbnet
1.
x = {ИД_ДЛЯ_ПОИСКА}
...
Рейтинг: 0 / 0
параметры в запросе
    #38568283
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделала вот так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<%
dim sql, cn, cmdx, x
x=ид_записи
Set conx = Server.CreateObject("ADODB.Connection") 
conx.Open "DSN=myDSN"


sql = "SELECT xxx,yyy FROM table WHERE id= @p_id"

set cmdx = Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.Recordset") 

cmdx.ActiveConnection = conx
cmdx.CommandText = sql
cmdx.NamedParameters = true
cmdx.Parameters.Append(cmdx.CreateParameter("@p_id", adNumeric, adParamInput, , x))

set rs = cmdx.execute
p=rs("xxx") 
%>


Ошибка теперь вот такая: Microsoft OLE DB Provider for ODBC Drivers ошибка '80040e21'

[MySQL][ODBC 5.1 Driver][mysqld-5.0.51a-24+lenny5-log]Invalid parameter type

на строке set rs = cmdx.execute

С какими параметрами тогда надо?
И как выяснить поддерживает ли провайдер именованные параметры?
...
Рейтинг: 0 / 0
параметры в запросе
    #38568312
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenashИ как выяснить поддерживает ли провайдер именованные параметры?почитать документацию
и вы уверены, что параметры задаются собакой? собака в мускле обычно обозначает переменную, перед параметром может стоять двоеточие (а при задании параметра - вообще только его имя без всяких спецсимволов)
впрочем, каждый провайдер работает по-своему, так что ещё раз повторю - смотрите документацию.
...
Рейтинг: 0 / 0
параметры в запросе
    #38568838
Stupid_BOT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> lenash,
> С какими параметрами тогда надо?
Попробуйте с позиционными параметрами, может будет достаноочно.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
<%
dim sql, cn, cmdx, x
x = ид_записи
Set conx = Server.CreateObject("ADODB.Connection") 
conx.Open "DSN=myDSN"

' плейсхолдер - '?' (знак вопроса) 
sql = "SELECT xxx,yyy FROM table WHERE id= ?"

set cmdx = Server.CreateObject("ADODB.Command")
' закомментировано, - всё равно переприсвоится при исполнении команды
' ''Set rs = Server.CreateObject("ADODB.Recordset") 

cmdx.ActiveConnection = conx
cmdx.CommandText = sql

' до лучших времен, - пока не выяснили поддерживает ли провайдер, - закомментировано
'cmdx.NamedParameters = true

' не знаю, действительно ли инициализированы у Вас константы adNumeric, adParamInput
' потому вместо них - их значения
' ''cmdx.Parameters.Append(cmdx.CreateParameter("@p_id", adNumeric, adParamInput, , x))
cmdx.Parameters.Append(cmdx.CreateParameter("@p_id", 131, 1, , x))

set rs = cmdx.execute
p=rs("xxx") 

' ##DEBUG -->
Response.Write "<pre> recordset data:"
if rs.BOF then
    Response.Write "[ recordset is empty ]"
else
    Response.Write rs.getString( , 10, , , "[null]")
end if
Response.Write "</pre><br>"
' ##DEBUG <--

' ##DEBUG or not debug -->
rs.close
set rs = nothing
' ##DEBUG or not debug -->
%>

...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / параметры в запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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