【C#】读写MySQL(一)数据库的连接和读取数据

首先我们需要MySql.Data.MySqlClient.dll这个库。下载地址 mysql-connector-net-8.0.9.exe 如果不能下载的话,那就直接到官方网站上去下载。用VS添加引用,在安装文件目录,找到DLL文件。


zhihu

PS:网图!侵删!

①记得在xaml里面数据绑定在MySQL表里的字段


<DataGrid    Name="datagrid1" Background="White" Margin="5,5,5,57" PreviewKeyDown="datagrid1_PreviewKeyDown"  AutoGenerateColumns="False"SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Header="学号" Binding="{Binding Path=sno}" Width="50" />
<DataGridTextColumn Header="姓名" Binding="{Binding Path=sname}" Width="60"/>
<DataGridTextColumn Header="性别" Binding="{Binding Path=ssex}" Width="40"/>
<DataGridTextColumn Header="出生日期" Binding="{Binding Path=sbirthday}" Width="150"/>
<DataGridTextColumn Header="班级" Binding="{Binding Path=class}" Width="70"/>
</DataGrid.Columns>
</DataGrid>

②调用MySql.Data.MySqlClient库


using MySql.Data.MySqlClient;

③数据库的连接


static string conStr = "server=127.0.0.1;port=3306;user=root;password=admin; database=world;CharSet=utf8;";//数据库的信息
/// 创建数据库连接
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Mysql_connect_Click(object sender, RoutedEventArgs e)
{
MySqlConnection connect = new MySqlConnection(conStr);
try
{
connect.Open();//建立连接,可能出现异常,使用try catch语句
MessageBox.Show("恭喜,已经建立连接!");
}
catch (MySqlException exe)
{
MessageBox.Show(exe.Message);//有错则报出错误
}
finally
{
connect.Close();//关闭通道
}
}

server=127.0.0.1;port=3306;user=root;password=admin;database=world;CharSet=utf8;

server表示本机地址,port表示端口,user表示数据库用户名,password表示数据库密码,database表示选择的数据库,charset表示该数据库的编码格式。这里有个坑,需要重点讲下。 Mysql默认的编码格式是utf8mb4,而MySqlClient这个库只能打开utf8编码的数据库,这里就需要把utf8mb4转换为utf8。网上有很多方法,就不展开了。

④接下来,我们来试下查询语句。


private void 读取_Click(object sender, RoutedEventArgs e)
{
MySqlConnection connect = new MySqlConnection(conStr); //创建一个数据库连接实例
connect.Open(); //打开数据库
string query = "SELECT NAME,CountryCode,district,PoPulation FROM city;"; //sql查询语句
MySqlCommand cmd = new MySqlCommand(query, connect); //将查询语句放进该数据库容器中
MySqlDataReader dataReader = cmd.ExecuteReader(); //创建一个实例保存查询出来的结构
}

⑤如何把查询结果显示出来呢,这个时候就要用到Datagird这个控件。


datagrid1.ItemsSource = dataReader;  //在DataGrid控件中显示查询结

⑥接下来是效果图。


effect

参考资料 知乎:https://zhuanlan.zhihu.com/p/88943685

blank