powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как забрать значение из хранимки? mySQL + ADO.NET
17 сообщений из 17, страница 1 из 1
Как забрать значение из хранимки? mySQL + ADO.NET
    #33851495
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня. Юзаю VB2005, mySQL 5.0.22 и .NET Connector.

Вот код. Не понимаю почему-то, как забрать полученное значение OUT-параметра:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        
        Dim cmd1 As New MySqlCommand
        cmd1.CommandType = CommandType.StoredProcedure
        cmd1.CommandText = "dblogic.xprights"
        cmd1.Connection = conn
        Dim par As New MySqlParameter("myanswer",   MySql.Data.MySqlClient.MySqlDbType.VarChar,  30 )
        par.Direction = ParameterDirection.Output
        Dim par2 As New MySqlParameter("username", MySql.Data.MySqlClient.MySqlDbType.VarChar,  30 )
        par2.Direction = ParameterDirection.Input
        par2.Value = "root"


        cmd1.Parameters.Add(par2)
        cmd1.Parameters.Add(par)


        cmd1.ExecuteReader()


Хранимка выполяется, а как забрать Out параметр? Считывать ридером его? Или можно как-то напрямую?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33853958
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
после cmd1.ExecuteReader()

parValue = par.Value
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33854594
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот метод пробовал, почему-то не проходит =(
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33854751
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что говорит?
процедура точно что-то возвращает что-то?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33854857
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если так

Код: plaintext
1.
2.
3.
4.
5.
6.
dim dr as DataReader

dr = cmd1.ExecuteReader()

dr.read()
x = dr.Getstring( 1 )

хотя для получения ОДИНОЧНОГО значения лчше использовать метод ExecuteScalar

Код: plaintext
x = cmd1.ExecuteScalar()
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33854915
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
winsky!
Процедура точно возвращает.

В консоли MySQL делаю:
mysql> CALL dblogic.xprights('root', @a);
mysql> SELECT @a;

и получаю нужное значение, то есть оно записывается в переменную.



HandKot
первый способ на строке x = dr.Getstring(1) выдает NullReferenceException "Object reference not set to an instance of an object.".

если делать ExecuteScalar, то выполняется, но x не имеет значения (пустая строка)
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33855014
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а покажите код, где вы пытаетесь доступиться к значению оутпут параметра
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33855664
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тупо пытаюсь так

Dim x as String

и дальше по вашим примерам. Что-то делаю неправильно?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33855889
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дайте код процы
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33855895
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoNameRесли делать ExecuteScalar, то выполняется, но x не имеет значения (пустая строка)
все правильно, потому что в проце в хидере не записан output parameter

Если проца возвраает заначение каким-то из следующих образов
Код: plaintext
select *
Код: plaintext
1.
2.
set @a=select *

return @a
То это - не output parameter, а возвращаемое значение.
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33855940
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В процедуре-то собственно одна строка всего

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE DEFINER=`root`@`localhost` PROCEDURE `xpRights`(IN UserName VARCHAR( 30 ), OUT myanswer VARCHAR( 30 ))
 
BEGIN

     SELECT a.uaccessrole INTO myanswer FROM dbworkparams.tblusers a WHERE ulogin=UserName;

END


SELECT всегда возвращает всего 1 значение, которое, как я понимаю, записывается в myanswer. Почему тогда я его не вижу?

Или необходимо как-то преобразовывать саму процедуру?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33857963
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoNameRЯ тупо пытаюсь так

Dim x as String

и дальше по вашим примерам. Что-то делаю неправильно?
покажите присваивание значения
и что после этого в x?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33858063
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если делаю так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
dim dr as DataReader, x as String

dr = cmd1.ExecuteReader()

dr.read()
x = dr.Getstring( 1 ) 'здесь ошибка вылетает NullReferenceException "Object reference not set to an instance of an object.".

Msgbox(x)

или так


Код: plaintext
1.
2.
Dim x as String
x = cmd1.ExecuteScalar() 'проходит нормально
Msgbox(x) 'пустой msgbox
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33858081
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в случае
x = par.Value.ToString()
что говорит?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33858130
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
Dim x as String
x = cmd1.ExecuteScalar() 'проходит нормально
Msgbox(par.Value.ToString())

Вот такой код заработал, спасибо огромное :)

Тогда хочется сразу задать вопрос по теоритической части:
по поводу поста Random_Goodman , а конкретно почему myanswer не output parameter?
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33858204
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю, как для mySQL, не работал с ним никогда
а в mssql процедура всегда возвращает интовое значение
и если не переопределить возврат в return, то при удачном выполнении будет возвращен 0
для аут параметров не нужно прописывать return, просто нужно присвоить ему значение.
а здесь если @a был задан как аут параметр, вы просто два раза вернули одно и то же значение, один раз собственно в параметре, второй в возврате процедуры

set @a=select *

return @a
...
Рейтинг: 0 / 0
Как забрать значение из хранимки? mySQL + ADO.NET
    #33858227
NoNameR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за разъяснения, вопрос закрыт :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как забрать значение из хранимки? mySQL + ADO.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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