Как читать данные из таблицы mysql в c#? - PullRequest
0 голосов
/ 18 марта 2020

Когда я запускаю программу, я всегда получаю эту ошибку: не могу найти указанный столбец в результатах: имя.

Я изменил «имя» для любого другого столбца, и он выдает мне ту же ошибку. Я также проверил соединение, и оно правильно написано.

 public partial class frmDashboard : Form
{
    public frmDashboard()
    {
        InitializeComponent();
    }
    public frmDashboard(string user)
    {
        InitializeComponent();

        MySqlConnection connect = new MySqlConnection("Server=localhost;Database=mydb;user=root;Pwd=carolle;SslMode=none");
        MySqlCommand cmd = new MySqlCommand("select upper(customer.firstname) from mydb.customer where customer.email = '" + user + "';");
        cmd.CommandType = CommandType.Text;
        cmd.Connection = connect;
        connect.Open();
        try
        {
            MySqlDataReader dr;
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                lblusername.Text = dr.GetString("firstname");

            }
            dr.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

Заранее спасибо.

1 Ответ

1 голос
/ 18 марта 2020

Это связано с использованием upper, которое меняет набор результатов.

Использование псевдонима с AS может исправить это.

SELECT upper(customer.firstname) AS firstname FROM mydb.customer WHERE customer.email = '"+ user + "';"

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

Если вы предпочитаете, вы можете вместо этого извлекать столбцы, используя индексы, изменяя

dr.GetString("firstname");

на

dr.GetString(0);

Индекс столбцов соответствует порядку столбцов в SELECT заявление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...