VS2019 は MySQL データベースに接続します

1. 実験の目的

1. 独自の MySQL データベースに接続するプロジェクトを設計してください. データベースには少なくとも 3 つのテーブルが含まれています.
2. dataGridView コントロールを使用してテーブル内のデータを表示します.
3. 基本的な crud 操作を実装します.

二、具体操作

1. データベース接続 VS2019

(1) mysql ドライバーのダウンロード

そうしないと、VS でデータベースに接続するときに、mysql データベースがないことがわかります。

ドライバーをダウンロードします:
mysql-connector-odbc-8.0.20-winx64.msi
mysql odbc ドライバー


mysql-for-visualstudio-1.2.9.msi
Visual Studio 接続 MySQL ツール


mysql-connector-net-8.0.20.msi
mysql database.net 開発ドライバー
 

(2) データベースに接続する

step1: [表示] をクリックし、[サーバー エクスプローラー] を選択します。

step2: データ接続を右クリックし、[接続の追加] を選択します。

ステップ 3: この時点で、MYSQL データベース オプションがデータ ソースに表示されるので、それを選択します。

 step4: 適切なデータベース情報 (つまり、事前に作成したデータベースの情報) を入力します。

              サーバー名の入力 MySQL IP アドレス
              localhost はローカル、localhost=127.0.0.1
              一般的に、ローカル入力の localhost または 127.0.0.1 を直接選択してから、
              MySQL のユーザー名とパスワードを入力します
              データベース名の入力テスト (オプション)

 ステップ 5: テスト リンクをクリックします。テストが成功したことが示されたら、[OK] をクリックして接続を完了します。

 2. テーブルを作成する

ここでは、navicat を直接開いてデータベースにテーブルを作成することを選択できますが、事前に作成済みであるため、ここでは説明しません。

3. DataGridView コントロールを使用して、テーブルにデータを表示します。

step1: ツールボックスで DataGridView コントロールを取得し、フォームにドラッグします。

この操作を行う前に、データリンクが開いているかどうかを確認してください.再起動して確認すると、データリンクは閉じられており、クリックすると開くことができます! ! ! 次に、次の操作を行います。

 

ステップ 2: [データ ソースの選択] の横にある小さな矢印をクリックし、[データ ソースの追加] を選択します。

 step3: データベースの種類を選択し、写真に従って手順を追ってください

 

 

Step4: 最後に、バインドするフォームを選択して完了です。

 4.基本的なcrud操作(特定のコード)を実装する

(1) 基本操作

private void print_in_dataGridView()
        {
            MySqlCommand mycom = conn.CreateCommand();
            mycom.CommandText = "SELECT * FROM student ; ";
            MySqlDataAdapter adap = new MySqlDataAdapter(mycom);
            DataSet ds = new DataSet();
            adap.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }
 
        private void button5_Click(object sender, EventArgs e)
        {
            string M_str_sqlcon = "server=localhost;user id=root;password=20010401;database=test";                                                                                              //创建数据库连接对象
            conn = new MySqlConnection(M_str_sqlcon);
            try
            {
                //打开数据库连接
                conn.Open();
                MessageBox.Show("数据库已经连接了!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            print_in_dataGridView();
        }

 (2) 増加


private void button4_Click(object sender, EventArgs e)
        {
            String table_name = textBox1.Text.Trim();
            String Id = textBox2.Text.Trim();
            String Name = textBox3.Text.Trim();
            String Sex = textBox4.Text.Trim();
            String Birth = dateTimePicker1.Value.ToString("yyyy-MM-dd");
            string[] row = { Id, Name, Birth, Sex };
 
            try
            {
                conn.Open();
                String insertstr = "INSERT INTO Student (s_id,s_name,s_birth,s_sex) VALUES" + "(" + Id + "," + Name + "," + Birth + "," + Sex + ");";
                MySqlCommand cmd = new MySqlCommand(insertstr, conn); //实例化数据库命令对象
                cmd.ExecuteNonQuery(); //执行命令
            }
            catch { MessageBox.Show("输入数据有误,请输入有效数据!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); }
            finally { conn.Close(); }
            //显示到dataGridView
            print_in_dataGridView();

         }

 (3) 削除:

private void button3_Click(object sender, EventArgs e)
        {
        try
                    {
                        conn.Open();
                        string select_id = textBox2.Text;//选择的当前行第一列的值,也就是ID
                        string delete_by_id = "delete from Student where s_id = " + "\"" + select_id + "\"";//sql删除语句,根据学号删除
                        MySqlCommand cmd = new MySqlCommand(delete_by_id, conn);
                        cmd.ExecuteNonQuery(); //执行命令
                    }
                    catch { MessageBox.Show("请正确选择行!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); }
                    finally { conn.Dispose(); }
                    print_in_dataGridView();
        }

(4) 変更:

private void button2_Click(object sender, EventArgs e)
        {
            int flag1 = 0, flag2 = 0;
            try
            {
                conn.Open();//打开数据库
                string updatestr = "UPDATE Student SET ";
                String table_name = textBox1.Text.Trim();
                String Id = textBox2.Text.Trim();
                String Name = textBox3.Text.Trim();
                String Sex = textBox4.Text.Trim();
                String Birth = dateTimePicker1.Value.ToString("yyyy-MM-dd");
                string[] row = { Id, Name, Birth, Sex };
                
                if (checkBox_birth.Checked == true)
                {
                    if (flag1 == 0)
                    {
                        updatestr += "s_birth = " + "\"" + Birth + "\"";
 
                        flag1 = 1;
 
                    }
                    else
                        updatestr += ", s_birth = " + "\"" + Birth + "\"";
                }
                if (checkBox_name.Checked == true)
                {
                    if (flag1 == 0)
                    {
                        updatestr += "s_name = " + "\"" + Name + "\"";
                        flag1 = 1;
                    }
                    else
                        updatestr += ", s_name = " + "\"" + Name + "\"";
                }
                if (checkBox_sex.Checked == true)
                {
                    if (flag1 == 0)
                    {
                        updatestr += "s_sex = " + "\"" + Sex + "\"";
                        flag1 = 1;
                    }
                    else
                        updatestr += ", s_sex = " + "\"" + Sex + "\"";
                }
                updatestr += " WHERE s_id = " + "\"" + Id + "\"";
                MySqlCommand cmd = new MySqlCommand(updatestr, conn);
                cmd.ExecuteNonQuery();
            }
            catch
            {
                flag2 = 1;
                MessageBox.Show("输入数据违反要求!", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally { conn.Close(); }
 
            print_in_dataGridView();
            if (flag2 == 0)
            {
                MessageBox.Show("修改成功!", "Tips", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

 (5) チェック:

private void button1_Click(object sender, EventArgs e)
        {
            string table_name = textBox1.Text.Trim();
            string name = textBox3.Text.Trim();
            string date = dateTimePicker1.Text;
            string sex = textBox4.Text.Trim();
            if (table_name == null && (table_name != "教师") && (table_name!="学生"))
 
            {
                MessageBox.Show("请正确填写表格名");
            }
 
            else
            {
                
                string sql = "select * from " + table_name;
                mda = new MySqlDataAdapter(sql, conn);
                ds = new DataSet();
                mda.Fill(ds, table_name);
                //显示数据
                dataGridView1.DataSource = ds.Tables[table_name];
                conn.Close();
 
            }
 
        }

3. 実験結果

データベース クエリ:

 データの変更:

4.倉庫コード

https://gitee.com/ajiuooo/csharp-for-database-connection.git

おすすめ

転載: blog.csdn.net/qq_57739064/article/details/125007228