为了可以更有效的学习MySQL数据库的操作,下面开始使用wpf来开发MySQL数据库的管理工具,包括数据库的基本操作:增删改查,同时添加其他的功能,深入的理解数据库语句。一边开发一边学习MySQL数据库的操作。
数据库管理工具,命名为DataBaseTools,项目代码托管到github中,前往下载代码。
使用visual studio创建wpf应用程序
直接打开visual studio,笔者使用的vs 2017社区版,免费的,推荐使用社区版,因为其他版本需要收费(虽然有**码,但不推荐)。如图:直接创建wpf应用程序:
创建新项目时会自动创建解决方案,vs的解决方案中可以添加和创建n多个项目,建议创建项目时勾选“新建GIT存储库”,方便后面推送项目至GitHub。创建完成项目后,自动打开项目设计界面,vs右下角有个git工具栏,点击上行箭头进行项目推送,可以选择推送项目至github,只需要登录github账号即可。
创建项目完成后,在解决方案资源管理器中打开mainwindow.xml,打开窗体设计器,如图:
建议在界面代码编辑区,进行手动编写界面代码。
添加简单的基本功能
进行设计简单的界面,罗列几个功能显示区,如图:
该部分界面代码为:
<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上。具体项目代码见下节。
执行连接本地数据库后,显示结果如下:
左边已经罗列出了该数据库下的所有表。