用C#访问mysql数据库,采用wpf做界面,里面几个基本的控件就可以用。非常简单。
先设计界面
下面是xaml
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
xmlns:HMIControl="clr-namespace:HMIControl" x:Class="WpfApp2.MainWindow"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="965" >
<Grid HorizontalAlignment="Left" Height="424" Margin="0,0,0,-4" VerticalAlignment="Top" Width="955">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="542*"/>
<ColumnDefinition Width="413*"/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="dg"
AutoGenerateColumns="False" SelectionChanged="dg_SelectionChanged"
>
<DataGrid.Columns>
<DataGridTextColumn
Width="*"
Binding="{Binding dbID}"
Header="dbID" />
<DataGridTextColumn
Width="*"
Binding="{Binding dbtext}"
Header="dbtext" />
<DataGridTextColumn
Width="*"
Binding="{Binding dbdate}"
Header="dbdate" />
</DataGrid.Columns>
</DataGrid>
<Button Content="Button" Grid.Column="1" HorizontalAlignment="Left" Height="74" Margin="224,166,0,0" VerticalAlignment="Top" Width="125" Click="Button_Click"/>
<HMIControl:ControlValve Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="66,90,0,0" VerticalAlignment="Top" Width="100" Cursor="SizeAll"/>
<HMIControl:LiquidAdd Grid.Column="1" HorizontalAlignment="Left" Height="100" Margin="66,240,0,0" VerticalAlignment="Top" Width="100"/>
</Grid>
</Window>
设计代码
大部分自动生成。
唯一需要了解原理数据绑定。就是连接数据库,保存到testlist里面,testlist是一个内存列表。然后把testlist通过sql库读入,程序根据一开始绑定好的关系,会直接把testlist和界面上的datagrid关联起来。直接看代码吧。
using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApp2
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public class Test
{
public Int32 dbID { get; set; }
public string dbtext { get; set; }
public DateTime dbdate { get; set; }
}
ObservableCollection<Test> testList = new ObservableCollection<Test>();
public MainWindow()
{
InitializeComponent();
//dg为datagrid的名字,将其资源与testlist绑定。
dg.ItemsSource = testList;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string connetStr = "server=127.0.0.1;port=3306;user=****;password=****; database=xxxx;";
// server=127.0.0.1/localhost 代表本机,端口号port默认是3306可以不写,xxxx是数据库名称,****改为你的mysql数据库设置。
MySqlConnection conn = new MySqlConnection(connetStr);
try
{
//这是连接语句
conn.Open();
}
catch
{
MessageBox.Show("连接数据库错误!");
}
if(conn.State==0)
{ return; }
string sql = "SELECT * FROM databasename.polls_question";//databasename是数据库中表的名称
MySqlCommand cmd = new MySqlCommand(sql, conn);//mysqlcommand是执行sql语句
MySqlDataReader reader = cmd.ExecuteReader();//执行ExecuteReader()
testList.Clear(); //提前清空
while (reader.Read())//执行读取下一行数据,返回值是bool
{
//逐步读取数据库中的数据,然后添加到集合中
testList.Add(new Test()
{
dbID = reader.GetInt32("ID"),
dbtext = reader.GetString("question_text"),
dbdate = reader.GetDateTime("pub_date")
});
}
}
private void dg_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
}
}