一、目的要求
1、请设计一个项目连接到自己的MySQL数据库,数据库包含至少三张表;
2、使用dataGridView控件显示表中的数据;
3、实现基本crud操作;
二、实验过程
1.连接数据库
参考C#调用MySQL数据库(使用MySql.Data.dll连接)代码段增加using MySql.Data.MySqlClient;
2.实现CRUD操作
2.1界面设计
控件功能描述:
DataGridView进行表中数据的显示。
textBox 1、2、3、4分别输入id、name、age、sex
Button:
连接:进行数据库连接。每次操作前都需要重新连接。
查询:查看表中所有数据。
插入:在表中插入行,即为textbox显示的信息
删除:根据id删id除记录
修改:根据修改记录
退出:断开连接并退出
2.2核心代码
2.2.1建表
CREATE TABLE class(
id VARCHAR(20),
name VARCHAR(20) NOT NULL DEFAULT '',
age VARCHAR(20) NOT NULL DEFAULT '',
sex VARCHAR(10) NOT NULL DEFAULT '',
PRIMARY KEY(id)
);
insert into class values('1' , '赵风' , '18' , '男');
insert into class values('2' , '钱雨' , '21' , '女');
insert into class values('3' , '孙雷' , '23' , '男');
insert into class values('4' , '赵电' , '56' , '男');
insert into class values('5' , '周花' , '24' , '女');
insert into class values('6' , '吴雪' , '19' , '女');
insert into class values('7' , '郑月' , '22' , '女');
insert into class values('8' , '王棋' , '20' , '男');
insert into class values('9' , '冯书' , '17' , '男');
insert into class values('10' , '陈画' , '21' , '女');
2.2.2连接
private void button1_Click(object sender, EventArgs e)
{
string M_str_sqlcon = "server=localhost;user id=root;password=123456;database=mysql2022"; //创建数据库连接对象
conn = new MySqlConnection(M_str_sqlcon);
try
{
//打开数据库连接
conn.Open();
MessageBox.Show("数据库连接成功!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
2.2.3查询
MySqlConnection conn; //连接数据库对象
MySqlDataAdapter mda; //适配器变量
DataSet ds; //临时数据集
//三个全局定义
private void button2_Click(object sender, EventArgs e)
{
string sql = "select * from user";
mda = new MySqlDataAdapter(sql, conn);
ds = new DataSet();
mda.Fill(ds, "user");
//显示数据
dataGridView1.DataSource = ds.Tables["user"];
conn.Close();
}
2.2.4插入
private void button4_Click(object sender, EventArgs e)
{
if (mda == null || ds == null)
{
MessageBox.Show("请先导入数据!");
return;
}
try
{
string msg = "是否添加此条数据?";
if (1 == (int)MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation))
{
MySqlCommandBuilder builder = new MySqlCommandBuilder(mda);
mda.Update(ds, "user");
MessageBox.Show("添加成功", "提示");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "error!");
}
}
2.2.5修改
private void button3_Click(object sender, EventArgs e)
{
if (mda == null || ds == null)
{
MessageBox.Show("请先导入数据!");
return;
}
try
{
string msg = "是否修改此条数据?";
if (1 == (int)MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation))
{
MySqlCommandBuilder builder = new MySqlCommandBuilder(mda); //命令生成器。
//适配器会自动更新用户在表上的操作到数据库中
mda.Update(ds, "user");
MessageBox.Show("修改成功", "提示");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "error!");
}
}
2.2.6删除
private void button5_Click(object sender, EventArgs e)
{
int index = dataGridView1.CurrentCell.RowIndex;
int id =(int) dataGridView1.Rows[index].Cells[0].Value;
string sql = "delete from user where id="+id+"";
conn.Open();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
int i = cmd.ExecuteNonQuery();
if (i < 0)
{
conn.Close();
MessageBox.Show("error!");
return;
}
conn.Close();
}
2.2.7退出
private void button6_Click(object sender, EventArgs e)
{
Application.Exit();
}
3.运行结果
4.实验小结
由于mysql和vs2022版本不相容的问题导致一般方法不能使数据库连接成功,但是使用MySQL。data.dll复制到项目bin目录下的方法也可以使项目连接到数据库,后续下载其他版本 的MySQL后也可以用项目资源管理器连接成功。另外数据库的查询,修改,插入,删除的代码需要使用全局定义来执行,代码并不难,但也要注意仔细。