为了可以更有效的学习MySQL数据库的操作,下面开始使用wpf来开发MySQL数据库的管理工具,包括数据库的基本操作:增删改查,同时添加其他的功能,深入的理解数据库语句。一边开发一边学习MySQL数据库的操作。

数据库管理工具,命名为DataBaseTools项目代码托管到github中,前往下载代码

使用visual studio创建wpf应用程序

直接打开visual studio,笔者使用的vs 2017社区版,免费的,推荐使用社区版,因为其他版本需要收费(虽然有**码,但不推荐)。如图:直接创建wpf应用程序:

使用wpf开发数据库管理工具(一)

创建新项目时会自动创建解决方案,vs的解决方案中可以添加和创建n多个项目,建议创建项目时勾选“新建GIT存储库”,方便后面推送项目至GitHub。创建完成项目后,自动打开项目设计界面,vs右下角有个git工具栏,点击上行箭头进行项目推送,可以选择推送项目至github,只需要登录github账号即可。

创建项目完成后,在解决方案资源管理器中打开mainwindow.xml,打开窗体设计器,如图:

使用wpf开发数据库管理工具(一)

建议在界面代码编辑区,进行手动编写界面代码。

添加简单的基本功能

进行设计简单的界面,罗列几个功能显示区,如图:

使用wpf开发数据库管理工具(一)

该部分界面代码为:

<Window x:Class="DataBaseTools.MainWindow" 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:DataBaseTools" mc:Ignorable="d" Title="数据库工具" Height="720" Width="1024" WindowStartupLocation="CenterScreen" WindowState="Maximized"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="23"/> <RowDefinition Height="36"/> <RowDefinition Height="*"/> <RowDefinition Height="23"/> </Grid.RowDefinitions> <!--菜单栏--> <Menu Grid.Row="0" VerticalAlignment="Stretch"> <MenuItem Height="23" Width="60" Header="文件(F)" FontSize="13" VerticalAlignment="Stretch"> <MenuItem Header="打开" Height="26" VerticalAlignment="Stretch"/> </MenuItem> <MenuItem Height="23" Width="60" Header="设置(S)" FontSize="13" VerticalAlignment="Stretch"/> </Menu> <!--工具栏--> <ToolBarPanel Grid.Row="1" Height="36" Margin="0"> <ToolBar Height="36" Margin="0" Padding="0" VerticalAlignment="Stretch"> <Button Content="新建连接" Width="60" VerticalAlignment="Stretch" Padding="0"/> </ToolBar> </ToolBarPanel> <!--内容区域,中部面板--> <Grid Grid.Row="2"> <Grid.ColumnDefinitions> <ColumnDefinition Width="200"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="200"/> </Grid.ColumnDefinitions> <!--数据库列表--> <Grid Grid.Column="0"> <Grid.RowDefinitions> <RowDefinition Height="30"></RowDefinition> <RowDefinition Height="50*"></RowDefinition> </Grid.RowDefinitions> <ComboBox Name="DataBaseList" Grid.Row="0" Margin="3,3,1,1" IsReadOnly="True" ></ComboBox> <!--<TreeView Name="dbTreeView" SelectedItemChanged="dbTreeView_SelectedItemChanged" Grid.Row="1" Margin="3" />--> <ListView Name="TablesListView" SelectionChanged="TablesListView_SelectionChanged" Grid.Row="1" Margin="3,2,0,0"></ListView> </Grid> <Grid VerticalAlignment="Stretch" Grid.Column="1" HorizontalAlignment="Stretch"> <Grid.RowDefinitions> <RowDefinition Height="50*"></RowDefinition> <RowDefinition Height="150"></RowDefinition> </Grid.RowDefinitions> <TabControl Grid.Row="0" Margin="3" Padding="1"> <TabItem Header="结果页1"> <TextBox HorizontalAlignment="Stretch" Margin="2" TextWrapping="Wrap" VerticalAlignment="Stretch" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto"/> </TabItem> <TabItem Header="结果页2"> <TextBox Margin="2" TextWrapping="Wrap"/> </TabItem> </TabControl> <GroupBox Header="日志信息" Grid.Row="1"> <TextBox Name="textMessage" HorizontalAlignment="Stretch" Margin="0" TextWrapping="Wrap" VerticalAlignment="Stretch" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto"/> </GroupBox> </Grid> <GroupBox Header="数据表列名" HorizontalAlignment="Stretch" Margin="1,3,3,1" Padding="0" VerticalAlignment="Stretch" Grid.Column="2"> <TreeView HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch"/> </GroupBox> </Grid> <!--底部状态栏和进度--> <Grid Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition Width="50*"></ColumnDefinition> <ColumnDefinition Width="50*"></ColumnDefinition> <ColumnDefinition Width="300"></ColumnDefinition> </Grid.ColumnDefinitions> <Label Name="Status1" Height="20" Content="状态" Padding="0" Margin="3,0,3,0" HorizontalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Column="0"></Label> <Label Name="Status2" Height="20" Content="进度信息" Padding="0" Margin="3,0,3,0" HorizontalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Column="1"></Label> <ProgressBar Name="processBar" Grid.Column="2" HorizontalAlignment="Stretch" Height="20" VerticalAlignment="Center" Margin="3,3,13,3" /> </Grid> </Grid> </Window>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<Window x:Class="DataBaseTools.MainWindow"
        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:DataBaseTools"
        mc:Ignorable="d"
        Title="数据库工具" Height="720" Width="1024" WindowStartupLocation="CenterScreen" WindowState="Maximized">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="23"/>
            <RowDefinition Height="36"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="23"/>
        </Grid.RowDefinitions>
        <!--菜单栏-->
        <Menu Grid.Row="0" VerticalAlignment="Stretch">
            <MenuItem Height="23" Width="60" Header="文件(F)" FontSize="13" VerticalAlignment="Stretch">
                <MenuItem Header="打开" Height="26" VerticalAlignment="Stretch"/>
            </MenuItem>
            <MenuItem Height="23" Width="60" Header="设置(S)" FontSize="13" VerticalAlignment="Stretch"/>
        </Menu>
        
        <!--工具栏-->
        <ToolBarPanel Grid.Row="1" Height="36" Margin="0">
            <ToolBar Height="36" Margin="0" Padding="0" VerticalAlignment="Stretch">
                <Button Content="新建连接" Width="60" VerticalAlignment="Stretch" Padding="0"/>
            </ToolBar>
        </ToolBarPanel>
        
        <!--内容区域,中部面板-->
        <Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="200"/>
            </Grid.ColumnDefinitions>
 
            <!--数据库列表-->
            <Grid Grid.Column="0">
                <Grid.RowDefinitions>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="50*"></RowDefinition>
                </Grid.RowDefinitions>
                <ComboBox Name="DataBaseList" Grid.Row="0" Margin="3,3,1,1" IsReadOnly="True" ></ComboBox>
                <!--<TreeView Name="dbTreeView" SelectedItemChanged="dbTreeView_SelectedItemChanged" Grid.Row="1" Margin="3" />-->
                <ListView Name="TablesListView" SelectionChanged="TablesListView_SelectionChanged" Grid.Row="1" Margin="3,2,0,0"></ListView>
            </Grid>
 
            <Grid VerticalAlignment="Stretch" Grid.Column="1" HorizontalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="50*"></RowDefinition>
                    <RowDefinition Height="150"></RowDefinition>
                </Grid.RowDefinitions>
                <TabControl Grid.Row="0" Margin="3" Padding="1">
                    <TabItem Header="结果页1">
                        <TextBox HorizontalAlignment="Stretch" Margin="2" TextWrapping="Wrap" VerticalAlignment="Stretch" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto"/>
                    </TabItem>
                    <TabItem Header="结果页2">
                        <TextBox Margin="2" TextWrapping="Wrap"/>
                    </TabItem>
                </TabControl>
 
                <GroupBox Header="日志信息" Grid.Row="1">
                    <TextBox Name="textMessage" HorizontalAlignment="Stretch" Margin="0" TextWrapping="Wrap" VerticalAlignment="Stretch" ScrollViewer.CanContentScroll="True" VerticalScrollBarVisibility="Auto"/>
                </GroupBox>
            </Grid>
 
            <GroupBox Header="数据表列名" HorizontalAlignment="Stretch" Margin="1,3,3,1" Padding="0" VerticalAlignment="Stretch" Grid.Column="2">
                <TreeView HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch"/>
            </GroupBox>
 
        </Grid>
 
        <!--底部状态栏和进度-->
        <Grid Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="50*"></ColumnDefinition>
                <ColumnDefinition Width="50*"></ColumnDefinition>
                <ColumnDefinition Width="300"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Label Name="Status1" Height="20" Content="状态" Padding="0" Margin="3,0,3,0" HorizontalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Column="0"></Label>
            <Label Name="Status2" Height="20" Content="进度信息" Padding="0" Margin="3,0,3,0" HorizontalAlignment="Stretch" VerticalContentAlignment="Center" Grid.Column="1"></Label>
            <ProgressBar Name="processBar" Grid.Column="2" HorizontalAlignment="Stretch" Height="20" VerticalAlignment="Center" Margin="3,3,13,3" />
        </Grid>
    </Grid>
</Window>

连接MySQL数据库

下面开始来尝试使用C#连接MySQL数据库,首先在当前解决方案中添加一个新的类库项目,这样做的好处是方便进行类库工具话,可以在以后把该项目生成的dll直接引用到其他项目中去。

创建类库项目vcblog_DataHelper,添加nuget程序包:MySQL,右键解决方案资源管理器,添加和管理nuget程序包,搜索MySQL,安装在项目vcblog_DataHelper上。具体项目代码见下节。

执行连接本地数据库后,显示结果如下:

使用wpf开发数据库管理工具(一)

左边已经罗列出了该数据库下的所有表。

相关文章: