2014-09-30 3 views
0

Я пытаюсь отобразить значения поля в базе данных MySql, но все, что я пробовал, не заполняет текстовое поле. Ниже приведен код, который я записал в некоторых примерах, которые я нашел. Может ли кто-нибудь указать мне в правильном направлении?Задать текстовое поле со значением из MySql в VB.net

Dim sqlStripCmd As New MySqlCommand("ore_price_population", Mysqlconn) 

    sqlStripCmd.CommandType = CommandType.StoredProcedure 
    Dim sdrstripcmd As MySqlDataReader = sqlStripCmd.ExecuteReader() 


    Dim getDetailsDA = New MySqlDataAdapter 
    Dim getDetailsDS As New DataSet 
    getDetailsDA.SelectCommand = sqlStripCmd 
    getDetailsDA.Fill(getDetailsDS, "getDetails") 
    Veldspar_Isk.Text = getDetailsDS.Tables("Ore_Ice_Prices").Rows(0).Item("Veldspar").ToString() 

SQL Query

DELIMITER $$ 

    USE `YHI`$$ 

    DROP PROCEDURE IF EXISTS `ore_price_population`$$ 

    CREATE DEFINER=`YHI`@`%` PROCEDURE `ore_price_population`() 
    BEGIN 

    SELECT `Veldspar` 
    FROM 
    `YHI`.`Ore_Ice_Prices`; 
    END$$ 

    DELIMITER ; 
+0

У вас возникло сообщение об ошибке? – Steve

+0

Нет, программа просто не заполняет данные в поле. –

+0

Я не эксперт по MySQL, но в sqlCommand я не вижу инструкции SELECT, которая будет выбирать данные из таблиц. «ore_price_population», это столбец из таблицы? Пожалуйста, предоставьте полный код. – Auguste

ответ

0

Когда вы передаете, в качестве второго параметра, строка в MySqlDataAdapter.Fill то таблицы, загруженные хранимой процедуры (один или несколько), которые названы в соответствии с этой строкой. Таким образом, у вас есть таблица с именем getDetails, и если их больше, то они называются getDetails1 и так далее.

Но тогда вы ссылаетесь на таблицу с именем Ore_Ice_Prices, которая не существует в вашем наборе данных.
Это одна из причин вашей проблемы.

Вы должны использовать

Veldspar_Isk.Text = getDetailsDS.Tables("getDetails").Rows(0).Item("Veldspar").ToString 

или

Veldspar_Isk.Text = getDetailsDS.Tables(0).Rows(0).Item("Veldspar").ToString 

Существует еще одна проблема в вашем коде. Строка, которая строит MySqlDataReader, блокирует соединение, пока вы не закроете устройство чтения. Это должно вызвать исключение в следующем вызове Fill, но я не уверен, что это происходит и в MySql, как на Sql Server.

+0

У меня нет try/catch. Я попробовал обе ваши рекомендации для кода, но оба возвращают пустое поле вместо заполнения данных. Есть ли что-нибудь еще, что я мог бы попробовать? –

+0

Удалите создание MySqlDataReader. Он не нужен, и он блокирует соединение, пока вы не закроете читателя. Это должно вызвать исключение, но я не уверен, что это так же в MySql – Steve

+0

Для вашего редактирования - это исправило проблему. большое вам спасибо за вашу помощь! Я собираюсь переустановить VS, так как я не получаю никаких ошибок. –

Смежные вопросы