必要准备:SQLyog(MySQL数据库可视化辅助软件) 提取码uq2v。 MySQL数据库下载 提取码:n76g。
一、综述
根据操作数据库时是否需要一直连接的特点,将行为分为两种。第一种是对数据库始终保持连接状态;第二种是先将数据暂存于内存中,操作是对内存的数据,操作完成后,更新数据库,如图1所示。
图1 操作数据库的方式
二、长连数据库
(1)测试界面,如图2所示。
图2 测试界面
(2)示例代码。
private void Button1_Click(object sender, EventArgs e)
{
//一、建立连接。
string connStr = "data source=localhost;uid=root;pwd=123456;database=teaching_database;SslMode = none";
MySqlConnection conn = new MySqlConnection(connStr); //生成连接对象。
try
{
conn.Open();
}catch(Exception ex) //连接失败,需要捕获抛出的异常
{
MessageBox.Show(ex.ToString(), "错误信息");
}
//二、生成命令。
string sqlStr = "select * from 测试 where 性别 = @sex"; //和下文的"@sex"对应。
MySqlCommand cmd = new MySqlCommand(sqlStr, conn); //生成命令构造器对象。
cmd.Parameters.AddWithValue("@sex", textBox_sex.Text);
//三、查询结果。
MySqlDataReader rdr = cmd.ExecuteReader();
try
{
while (rdr.Read())//Read()函数设计的时候是按行查询,查完一行换下一行。
{
string s1 = rdr[0].ToString();
string s2 = rdr[1].ToString();
}
}catch(Exception ex)
{
MessageBox.Show(ex.ToString(), "错误信息");
}
}
(3)SQLyog展示的表格内容,如图3所示。
图3 SQLyog内表内容
(4)单步调试观察运行结果是否匹配,如图4所示。
图4
三、处理解耦数据
(1)测试界面,如图5所示。
图5 解耦数据测试
(2)示例代码。
导入按钮的实现:
private void Button1_Click(object sender, EventArgs e)
{
string connStr = "data source=localhost;uid=root;pwd=123456;database=teaching_database;SslMode = none";
MySqlConnection conn = new MySqlConnection(connStr);
string sqlStr = "select * from 测试"; //
adapter = new MySqlDataAdapter(sqlStr, conn);
set = new DataSet(); //数据集、本地微型数据库可以存储多张表。
adapter.Fill(set,"测试");
dataGridView1.DataSource = set;
dataGridView1.DataMember = "测试";
}
更新按钮的实现:
private void button1_Click_1(object sender, EventArgs e)
{
if(adapter == null || set == null) //先导入数据才能更新数据。
{
MessageBox.Show("请先导入数据");
return;
}
try
{
string msg = "确实要更新吗?";
if(1 == (int)MessageBox.Show(msg, "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation))
{
MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter); //命令生成器。
adapter.Update(set, "测试");
MessageBox.Show("更新成功", "提示");
}
}catch(Exception ex)
{
MessageBox.Show(ex.ToString(), "错误信息");
}
}
(3)运行测试:运行结果如图6 所示。
图6 运行结果
四、参考资料
【1】C# - MySQL数据库编程 简明教程
【2】C#操作数据库教程
【3】DataGridView编辑后立即更新到数据库的两种方法
【4】C# 中的MessageBox 弹出提示框(消息框)的用法