目录
连接数据库
首先创建了项目之后就可以先连接MySQL数据库 ,点击视图里的服务器资源管理器
依次填上自己数据库的信息就可以连上了 ,我的连上了之后就自动添加了一些有关的引用。
添加控件
要添加一个DataGridView 来显示表的有关信息,加几个Button来进行一些操作
用 DataGridView 无代码来显示一些表格信息
点击添加项目数据源 ,然后一直下一步,按要求填上自己数据库的有关内容就连接上了
代码连接
测试连接数据库
其中创建数据库连接对象要根据自己的数据库进行修改
string M_str_sqlcon = "server=localhost;user id=root;password=1750173201;database=sys"; //创建数据库连接对象
conn = new MySqlConnection(M_str_sqlcon);
try
{
//打开数据库连接
conn.Open();
MessageBox.Show("数据库已经连接了!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
显示数据
string sql = "select * from course";
mda = new MySqlDataAdapter(sql, conn);
ds = new DataSet();
mda.Fill(ds, "course");
//显示数据
dataGridView1.DataSource = ds.Tables["course"];
conn.Close();
添加代码
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, "course");
MessageBox.Show("添加成功", "提示");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "错误信息");
}
}
删除代码
int count = 0;
try
{
//for循环,dataGridView1.SelectedRows.Count为鼠标选中行的数目,一次for循环删除一行数据
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
//获得i行的编号
int id = Convert.ToInt32(dataGridView1.SelectedRows[i].Cells[0].Value);
//编写数据库删除代码,这里还用到了动态变量,用于改变每次id值
string dataToDo3 = $"delete from student where id = {id}";
MySqlCommand
//创建MySqlCommand类用于SQL语句的执行
cmd = new MySqlCommand(dataToDo3, conn);
//定义x接收返回值SQL语句返回值,为0则为执行失败
int x = cmd.ExecuteNonQuery();
//执行判断
if (x == 0)
{
MessageBox.Show("删除失败");
}
//若成功则计数值+1
count = count + 1;
}
//若计数值等于选中行的数目,代表成功完成所有行的删除
if (count == dataGridView1.SelectedRows.Count)
{
MessageBox.Show("删除成功");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
//这里是刷新界面
button2.PerformClick();
}
}
修改代码
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, "course");
MessageBox.Show("修改成功", "提示");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "错误信息");
}
}
退出代码
Application.Exit();
所有代码
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 连接数据库
{
public partial class Form1 : Form
{
MySqlConnection conn; //连接数据库对象
MySqlDataAdapter mda; //适配器变量
DataSet ds; //临时数据集
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string M_str_sqlcon = "server=localhost;user id=root;password=1750173201;database=sys"; //创建数据库连接对象
conn = new MySqlConnection(M_str_sqlcon);
try
{
//打开数据库连接
conn.Open();
MessageBox.Show("数据库已经连接了!");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void sysDataSet1BindingSource_CurrentChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
string sql = "select * from course";
mda = new MySqlDataAdapter(sql, conn);
ds = new DataSet();
mda.Fill(ds, "course");
//显示数据
dataGridView1.DataSource = ds.Tables["course"];
conn.Close();
}
private void button5_Click(object sender, EventArgs e)
{
int count = 0;
try
{
//for循环,dataGridView1.SelectedRows.Count为鼠标选中行的数目,一次for循环删除一行数据
for (int i = 0; i < dataGridView1.SelectedRows.Count; i++)
{
//获得i行的编号
int id = Convert.ToInt32(dataGridView1.SelectedRows[i].Cells[0].Value);
//编写数据库删除代码,这里还用到了动态变量,用于改变每次id值
string dataToDo3 = $"delete from student where id = {id}";
MySqlCommand
//创建MySqlCommand类用于SQL语句的执行
cmd = new MySqlCommand(dataToDo3, conn);
//定义x接收返回值SQL语句返回值,为0则为执行失败
int x = cmd.ExecuteNonQuery();
//执行判断
if (x == 0)
{
MessageBox.Show("删除失败");
}
//若成功则计数值+1
count = count + 1;
}
//若计数值等于选中行的数目,代表成功完成所有行的删除
if (count == dataGridView1.SelectedRows.Count)
{
MessageBox.Show("删除成功");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
//这里是刷新界面
button2.PerformClick();
}
}
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, "course");
MessageBox.Show("修改成功", "提示");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "错误信息");
}
}
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, "course");
MessageBox.Show("添加成功", "提示");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "错误信息");
}
}
private void button6_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
结果展示
点击测试连接后
点击 显示数据后就能在DataGridView中看到选择的表格
点击添加后就可以看到表格的信息的改变(删除和修改类似我就不在展示了),点击退出就退出程序了。
总结
(这是我在vs2017上运行的结果,在不同的版本上运行可能会有差别) 现在数据库已经是生活中很重要的一部分,连接数据库来进行数据库的有关操作已经成为编程中很重要的一环。这次的博客我只是进行了简单的连接数据库和一些增加,删除和修改的操作,而且这些操作还都不是很完善,如果要进行比较精确的操作还是要进行进一步的研究和修改。这次简单的操作是为了以后更完善的操作。
gitee的地址
https://gitee.com/zhang-tian_yu/connect-my-sql.git