-1

ええと、これは非常に幅広い質問です。いろいろ調べましたが、いまだに迷っています。

したがって、私の問題は、SQL データベースに接続された小さな C# プログラムがあることです。C# インターフェースを介して、SQL データベースにデータを挿入できます (MySQLWorkbench でチェックしたところ、データがすべてそこにあるため、それはわかっています)。そのためには DataGridView を使用する必要がありますが、それは非常に複雑で、多くの情報を見てきましたが、さらに混乱しています。

C# プログラムをほぼ完全にコピーペーストします。

private void Form1_Shown(object sender, EventArgs e)
    {
        conexion.Open();
        textBox2.Focus();
        try
        {
            DataSet ds = new DataSet();
            MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nombre FROM tbestados", conexion);
            da.Fill(ds, "FillDropDown");
            comboBox1.DisplayMember = "Nombre";
            comboBox1.ValueMember = "CveEstado";
            comboBox1.DataSource = ds.Tables["FillDropDown"];
            conexion.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

    }

    private void button1_Click(object sender, EventArgs e)
    {
        Guardar();
    }

    private void Guardar()
    {
        if (textBox2.Text == "")
        {
            MessageBox.Show("Ingrese un nombre", "Error");
            textBox2.Focus();
        }
        else if (comboBox1.SelectedItem.ToString() == "")
        {
            MessageBox.Show("Elija un estado", "Error");
            comboBox1.Focus();
        }
        else
        {
            conexion.Open();
            try
            {
                cmd.CommandText = "insert into tbmunicipios (nombre, cveestado) values ('" + textBox2.Text + "', '" + comboBox1.SelectedValue.ToString() + "')";
                cmd.ExecuteNonQuery();
                cmd.Clone();
                MessageBox.Show("Datos Guardados", "Mensaje");
                conexion.Close();
                textBox2.Text = "";
                comboBox1.Text = "";
                textBox2.Focus();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

上記では、「Nombre」{name} を表示しますが、Combobox で「Clave」{Id} を取得します。そして、DataGridView でも同じことをしたいです。繰り返しますが、私は多くの情報を見てきましたが、そのすべてが私をさらに混乱させました。

そして、明確にするために、SQL コードもコピーして貼り付けます。

Create table tbEstados
(
    CveEstado int not null,
    Nombre varchar (45) not null,
    Constraint pkCveEstado Primary Key (CveEstado)
)Engine=Innodb;
Create table tbMunicipios
(
    CveMunicipio int not null AUTO_INCREMENT,
    Nombre varchar (45) not null,
    CveEstado int not null,
    Constraint pkCveMunicipio Primary Key (CveMunicipio),
    Constraint fkCVeEdo Foreign Key (CveEstado) references tbEstados (CveEstado)
)Engine=Innodb;

ご回答ありがとうございます:D

4

1 に答える 1

1

私がお勧めするのは、このようDataTableに代わりに使用して、UI にDataSetドラッグすることですDataGridView

private void Form1_Shown(object sender, EventArgs e)
{
    conexion.Open();
    textBox2.Focus();
    try
    {
        DataTable dt = new DataTable();
        MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nombre FROM tbestados", conexion);
        da.Fill(dt);
        //Here Comes your DataGridView
        DataGridView1.DataSource = dt;
        conexion.Close();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

}

私がやっていることのベストプラクティスは、Form_Loadイベントでこのメソッドを呼び出すことです

于 2013-04-20T07:23:49.403 に答える