Выполняя запрос, я получил два разных результата PhpMyAdmin и C# - PullRequest
0 голосов
/ 01 апреля 2020

Здравствуйте, если я выполняю следующий запрос в PhpMyAdmin, у меня есть 5 Результат. Если я точно выполню запрос в C#, я получу только 1 результат.
Я бью себя по столу в течение 2 дней, но не могу найти решение. Некоторые идеи?

SELECT 
tbl_orders.Data_payment,
tbl_customers.City,
tbl_customers.Country,
tbl_orders.Price,
tbl_orders.state_order,
tbl_products.Product_ID,
tbl_products.Name
FROM
tbl_orders
    INNER JOIN
tbl_customers ON tbl_orders.fk_customer_id = tbl_customers.Customer_ID
    INNER JOIN
tbl_products ON tbl_orders.fk_product_id = tbl_products.Product_ID
WHERE
tbl_products.Product_ID = '2'
    AND tbl_customers.Country = 'Russia'
    AND tbl_orders.Data_payment BETWEEN '2019-04-01' AND '2020-04-01'



        private void test_load(string query)
    { DataTable dt = new DataTable();
        try
        {
            using (MySqlConnection conn = new MySqlConnection(MyConString))
            {
                using (MySqlCommand cmd = new MySqlCommand(query, conn))
                {
                    conn.Open();
                    using (MySqlDataReader dr = cmd.ExecuteReader())    
                    {               
                        dt.Load(dr);
                        MessageBox.Show(dt.Rows.Count.ToString());
                        dataGridView1.DataSource = dt;
                    }
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("err test_load " + ex);
        }
    }

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

После добавления базы данных и тестирования предоставленного вами кода я обнаружил, что все еще

не могу воспроизвести вашу проблему. Я могу получить тот же результат в sql -запросе и в c# коде.

Вы можете увидеть следующую картинку.

enter image description here

Я также проверил это, я считаю, что это отличается от вашей фотографии.

enter image description here

0 голосов
/ 05 апреля 2020

Хорошо, так что я наконец-то решил проблему.

Этот кусок кода, который не работает, возвращает только одну строку и должен возвращать более одной.

        private DataTable test2_load(string query)
    {
        DataTable dt = new DataTable();
        try
        {
            using (MySqlConnection conn = new MySqlConnection(MyConString))
            {
                using (MySqlCommand cmd = new MySqlCommand(query, conn))
                {
                    conn.Open();
                    using (MySqlDataReader data_reader = cmd.ExecuteReader())
                    {                     
                        dt.Load(data_reader);
                    }
                }               
            }
            return dt;
        }
        catch (Exception ex)
        {
            MessageBox.Show("err test_load " + ex);
            return null;
        }
    }

Это работает. Вернуть нужное количество строк

        private void test3_load(string query)
    {
        MySqlConnection mysqlCon = new

         MySqlConnection(MyConString);
        mysqlCon.Open();

        MySqlDataAdapter MyDA = new MySqlDataAdapter();

        MyDA.SelectCommand = new MySqlCommand(query, mysqlCon);

        DataTable table = new DataTable();
        MyDA.Fill(table);

        BindingSource bSource = new BindingSource();
        bSource.DataSource = table;

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