Как получить данные удаленно из базы данных mySQL, установленной в raspberry pi в приложении WinForms? - PullRequest
0 голосов
/ 20 февраля 2020

Я собираю данные датчиков в моей базе данных raspberry pi mySQL, и эти данные необходимо использовать в приложении windows. Следующие шаги были сделаны:

Адрес привязки закомментирован в конфигурационном файле Raspberry

Соединение между приложением windows формы и базой данных Rasberry mySQL успешно выполнено с помощью следующего кода ,

private void button1_Click(object sender, EventArgs e)
{
    MySqlConnectionStringBuilder conn_string = new MySqlConnectionStringBuilder();
    conn_string.Server = "192.168.x.xxx";
    conn_string.Port = 3306;
    conn_string.UserID = "root";
    conn_string.Password = "password";
    conn_string.Database = "db_name";
    MySqlConnection MyCon = new MySqlConnection(conn_string.ToString());

    try
    {
        MyCon.Open();
        MessageBox.Show("Open");
        MyCon.Close();
        MessageBox.Show("Close");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

enter image description here

Когда я пытаюсь получить данные со следующим кодом и тем же соединением

private void button1_Click(object sender, EventArgs e)
{

    MySqlConnectionStringBuilder conn_string = new MySqlConnectionStringBuilder();
    conn_string.Server = "192.168.x.xxx";
    conn_string.Port = 3306;
    conn_string.UserID = "root";
    conn_string.Password = "password";
    conn_string.Database = "db_name";
    MySqlConnection MyCon = new MySqlConnection(conn_string.ToString());

    MyCon.Open();

    MySqlDataAdapter sqlDa = new MySqlDataAdapter("SELECT * FROM tab_name", MyCon);
    sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
    DataTable dtblData = new DataTable();
    sqlDa.Fill(dtblData);
    dataGridView1.DataSource = dtblData;

}

Это сообщение появляется

MySql .Data.MySqlClient.MySqlException: «Процедура или функция» SELECT * FROM tab_name WHERE 1 'не найдена в базе данных' db_name '.'

enter image description here

В указанной базе данных / таблице имеется около 150000 данных, которые можно увидеть на следующем рисунке. enter image description here

Любая помощь будет оценена.

1 Ответ

1 голос
/ 20 февраля 2020

"SELECT * FROM tab_name" не является хранимой процедурой, поэтому CommandType.StoredProcedure неверно.

сделать его

sqlDa.SelectCommand.CommandType = CommandType.Text;

или удалить полностью, поскольку CommandType.Text является значением по умолчанию.

оставшийся тип команды должен работать с именем таблицы:

MySqlDataAdapter sqlDa = new MySqlDataAdapter("tab_name", MyCon);
sqlDa.SelectCommand.CommandType = CommandType.TableDirect;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...