用C# WPF访问mysql数据库

用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)
        {

        }
    }
}
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值