Datagridview с запросом на C#

#c# #mysql #.net #winforms #datagridview

#c# #mysql #.net #winforms #datagridview

Вопрос:

У меня есть 2 таблицы в MySQL (privacy, lawsuit_under_500), в privacy у меня есть 2 столбца (id, nameofcase ), в lawsuit_under_500 4 столбца (id,nameofcase,priceone,pricetwo), я создаю форму с datagridview и хочу выполнить этот запрос :

 select  privacy.id,lawsuit_under_500.id,privacy.nameofcase, lawsuit_under_500.priceone, lawsuit_under_500.pricetwo
From privacy inner join lawsuit_under_500
where  lawsuit_under_500.id=5 and privacy.id=1 || lawsuit_under_500.id=1 and privacy.id=2  || lawsuit_under_500.id=10 and privacy.id=3
ORDER BY privacy.id  
  

В той форме, которая у меня есть:

   public Form55()
        {
            InitializeComponent();
        }

        private void Form55_Load(object sender, EventArgs e)
        {

        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }
  

Я поместил таблицы в свой набор данных, но не могу понять, как это сделать. Я попытался создать privacyBindingSourse в datagridview и вручную добавил 2 кнопки для priceone и pricetwo. я не могу задать запрос, чтобы получить информацию.
Есть идеи / помощь, как это сделать?

ПРЕЖДЕ ЧЕМ ОТВЕТИТЬ, ЕСЛИ У ВАС ЕСТЬ КАКИЕ-ЛИБО ВОПРОСЫ, ПОЖАЛУЙСТА, СПРОСИТЕ МЕНЯ

Ответ №1:

 using MySql.Data.MySqlClient;

MySqlConnection conn = new MySqlConnection("Your MY SQL connection");
MySqlCommand cmd = new MySqlCommand("Your Mysql query");
MySqlDataReader dr=cmd.ExecuteReader();

gridview1.datasource=dr;
gridview1.databind();

// try this also

connectionString = "Your Connection";

connection = new MySqlConnection(connectionString);

if (this.OpenConnection() == true)
{
    mySqlDataAdapter = new MySqlDataAdapter("Your Query", connection);
    DataSet DS = new DataSet();
    mySqlDataAdapter.Fill(DS);
    dataGridView1.DataSource = DS.Tables[0];

    //close connection
    this.CloseConnection();
}
  

Комментарии:

1. куда я это поместил? в form55_Load?

2. да. если вы хотите загрузить таблицу данных при нажатии кнопки, вы также можете использовать событие ButtonClick.

3. 2 последние строки в вашем коде неверны. это должно быть dataGridView1 . но теперь неверен источник данных и привязка данных

4. Хотя этот блок кода может ответить на вопрос, было бы лучше, если бы вы могли дать небольшое объяснение, почему он это делает.

5. Является ли ваше приложение ASP. Чистый?

Ответ №2:

Я сделал это таким образом

  private void Form56_Load(object sender, EventArgs e)
        {


            try
            {
                MySqlConnection cnn = new MySqlConnection("MY CONNECTION");

                cnn.Open();
                // - DEBUG 
                // MessageBox.Show("Connection successful!"); 
                MySqlDataAdapter MyDA = new MySqlDataAdapter();
                MyDA.SelectCommand = new MySqlCommand("MY QUERY", cnn);
                DataTable table = new DataTable();
                MyDA.Fill(table);

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

                dataGridView1.DataSource = bSource;

            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                MessageBox.Show(ex.Message);
                Close();
            }

        }
  

Ответ №3:

        static  public SqlCeConnection OpenSQL()
    {
        SqlCeConnection cncount = new SqlCeConnection(@"Data Source = "   Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase)   @"Database.sdf; Password =''");
        return cncount;
    }

    static  public DataTable  DoSelect( string strSQL)
    {
        SqlCeConnection cn = OpenSQL();

        DataTable dtRetValue = new DataTable();

        using (SqlCeDataAdapter da = new SqlCeDataAdapter())
        {
            using (SqlCeCommand cmd = cn.CreateCommand())
            {
                cmd.CommandText = strSQL;
                da.SelectCommand = cmd;

                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();
                }

                try
                {
                    //using (SqlCeDataReader reader = da.SelectCommand.ExecuteReader())
                    SqlCeDataReader metsDr = da.SelectCommand.ExecuteReader();
                    dtRetValue.Load(metsDr);


                    return dtRetValue;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error - DoSelect", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    return null;
                }
            }
        }
    }
  

Вставить в кнопку

         string sql1 = "YOURE QUERY ";
        DataTable dt1 = SQLcode.DoSelect(sql1);
        dgvcompany.DataSource = dt1;