目录结构
1.demo简介
因为是第一次接触C#的这个语言 没有规划过 自己写个demo 分享给大家 希望 能给大家一点点帮助 就是表现层的一些东西 后台也是简单的赠删改查
登录页面 MainWindow.xaml
<Window x:Class="WpfApp4.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:WpfApp4"
mc:Ignorable="d"
Title="login" Height="261.4" Width="703.2">
<Grid Margin="0,0,88.6,0">
<Grid HorizontalAlignment="Left" Width="745">
<Grid.RowDefinitions>
<RowDefinition Height="70"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<Label Grid.Row="1" InkCanvas.Left="70" Margin="172,0,477.5,0" RenderTransformOrigin="0.145,0.333" >请输入用户名</Label>
<Label Grid.Row="2" InkCanvas.Left="70" Margin="175,0,472.5,0">请输入密码</Label>
<TextBox x:Name="Code" Width="200" Text="13333333333" Grid.Row="1"></TextBox>
<TextBox x:Name="password" Width="200" Text="znyg" Grid.Row="2"></TextBox>
<Button x:Name="subber" Width="70" Click="Subber_Click" Grid.Row="3" Margin="349,10.433,326,-10.433">登录</Button>
<Label Content="登录界面" HorizontalAlignment="Left" Margin="294,20,0,0" VerticalAlignment="Top" Width="95" Height="40"/>
</Grid>
</Grid>
</Window>
MainWindow.xaml.cs
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
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 WpfApp4
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
JDBCconfig jBCconfig = new JDBCconfig();
private void Subber_Click(object sender, RoutedEventArgs e)
{
int flag = 1;
string code = Code.Text.Trim().ToString();
string passWord = password.Text.Trim().ToString();
if (code == ""|| code == null)
{
MessageBox.Show("请输入用户名!");
}
if (passWord == "" || passWord == null)
{
MessageBox.Show("请输入密码!");
}
try
{
string sqlStrng = string.Format("select * from userinfo where code='{0}' and pwd='{1}'", code, passWord);
MySqlDataReader sqlreader = jBCconfig.getmysqlread(sqlStrng);
while (sqlreader.Read()) // 一次读一条记录
{
if (sqlreader["Code"].ToString() == code && sqlreader["Pwd"].ToString() == passWord)
{
MessageBox.Show("登陆成功!");
indexMain index = new indexMain();
index.Show();
Close();
jBCconfig.closeMySQL();
flag = 0;
}
}
if (flag == 1)
{
MessageBox.Show("用户名或密码错误!");
}
}
catch(Exception ex)
{
Console.WriteLine(ex);
MessageBox.Show("数据库连接发生问题 请及时联系网管!");
}
}
}
}
indexMain.xaml
<Window x:Class="WpfApp4.indexMain"
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:WpfApp4"
mc:Ignorable="d"
Title="indexMain" Height="541.4" Width="1248.2">
<Grid>
<Grid>
<DataGrid x:Name="dataGrid1" Height="325" Margin="50,60,41.8,35.4">
<DataGrid.Columns>
</DataGrid.Columns>
</DataGrid>
<Button Content="下一页" Click="nextPage" HorizontalAlignment="Left" Height="26.8" Margin="1045,463,0,0" VerticalAlignment="Top" Width="80"/>
<Button Content="上一页" Click="previousPage" HorizontalAlignment="Left" Height="26.8" Margin="890,463,0,0" VerticalAlignment="Top" Width="90"/>
<Label Content="共有" HorizontalAlignment="Left" Height="26.8" Margin="90,463,0,0" VerticalAlignment="Top" Width="40"/>
<Label Content="" x:Name="sunPage" HorizontalAlignment="Left" Height="26.8" Margin="121,462.78,0,0" VerticalAlignment="Top" Width="40"/>
<Label Content="页" HorizontalAlignment="Left" Height="26.8" Margin="149,463,0,0" VerticalAlignment="Top" Width="40"/>
<TextBox x:Name="jumpPageNumber" HorizontalAlignment="Left" Height="26.8" Margin="265,463,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="75"/>
<Button Content="跳转" Click="jumpPage" HorizontalAlignment="Left" Height="26.8" Margin="370,463,0,0" VerticalAlignment="Top" Width="61"/>
<Label Content="每页显示多少条" HorizontalAlignment="Left" Height="26.58" Margin="465,463,0,0" VerticalAlignment="Top" Width="100"/>
<ComboBox x:Name="tiaoshuNum" HorizontalAlignment="Left" Height="26.58" Margin="585,463,0,0" VerticalAlignment="Top" Width="105" SelectedIndex="0">
<TextBlock>10</TextBlock>
<TextBlock>20</TextBlock>
</ComboBox>
</Grid>
<Button Content="添加数据" Click="addMap" HorizontalAlignment="Left" Height="23" Margin="154,26,0,0" VerticalAlignment="Top" Width="85"/>
<Button Content="删除数据" Click="delMap" HorizontalAlignment="Left" Height="23" Margin="322.5,26,0,0" VerticalAlignment="Top" Width="85"/>
<Button Content="修改数据" Click="updteMap" HorizontalAlignment="Left" Height="23" Margin="481.5,27.12,0,0" VerticalAlignment="Top" Width="85"/>
</Grid>
</Window>
indexMain.xaml.cs
using System;
using System.Collections;
using System.Collections.Generic;
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.Shapes;
using MySql.Data.MySqlClient;
namespace WpfApp4
{
/// <summary>
/// indexMain.xaml 的交互逻辑
/// </summary>
public partial class indexMain : Window
{
public indexMain()
{
InitializeComponent();
//页面加载表格
loadTable();
}
JDBCconfig jBCconfig = new JDBCconfig();
pageMap pagemap = new pageMap();
public void loadTable()
{
//接受 第几页 每页也显示多少条数
PageBean<Maps> pageBean= pagemap.findByPage(1,10);
sunPage.Content = pageBean.totalPage;
jumpPageNumber.Text = "1";
dataGrid1.AutoGenerateColumns = true;
dataGrid1.ItemsSource = pageBean.lists;
}
//跳转添加页面
private void addMap(object sender, RoutedEventArgs e)
{
addPage Add = new addPage();
Add.Show();
Add.Closed += Add_Closed01;
}
private void Add_Closed01(object sender, EventArgs e)
{
loadTable();
}
//删除
private void delMap(object sender, RoutedEventArgs e)
{
MessageBoxResult return01 = MessageBox.Show("你确定删除么删除数据不可恢复请慎重", "提示信息", MessageBoxButton.OKCancel);
if (return01.ToString().Equals("OK"))
{
for (int i = 0; i < dataGrid1.SelectedItems.Count; i++)
{
Maps maps = (Maps)dataGrid1.SelectedItems[i];
delMapByid(maps.ID);
}
jBCconfig.closeMySQL();
loadTable();
MessageBox.Show("删除成功");
}
}
//修改
private void updteMap(object sender, RoutedEventArgs e)
{
Maps maps = (Maps)dataGrid1.SelectedItems[0];
updatePage update = new updatePage(maps);
update.Show();
update.Closed += Add_Closed01;
}
//执行删除的方法
public void delMapByid(object id)
{
string sqlStrng = string.Format("DELETE FROM maps_table WHERE ID= '{0}'", id);
jBCconfig.getmysqlread(sqlStrng);
}
//页面跳转
private void jumpPage(object sender, RoutedEventArgs e)
{
//当前页面
int JumpPageNumber = int.Parse (jumpPageNumber.Text.ToString());
// 每页显示多少条
int TiaoshuNum = int.Parse(tiaoshuNum.Text.ToString());
PageBean<Maps> pageBean = pagemap.findByPage(JumpPageNumber, TiaoshuNum);
sunPage.Content = pageBean.totalPage;
jumpPageNumber.Text = pageBean.currPage.ToString();
dataGrid1.AutoGenerateColumns = true;
dataGrid1.ItemsSource = pageBean.lists;
}
//上一页
private void previousPage(object sender, RoutedEventArgs e)
{
//当前页面
int JumpPageNumber = int.Parse(jumpPageNumber.Text.ToString())-1;
if (JumpPageNumber<1)
{
MessageBox.Show("已经是第一页了");
return;
}
// 每页显示多少条
int TiaoshuNum = int.Parse(tiaoshuNum.Text.ToString());
PageBean<Maps> pageBean = pagemap.findByPage(JumpPageNumber, TiaoshuNum);
sunPage.Content = pageBean.totalPage;
jumpPageNumber.Text = pageBean.currPage.ToString();
dataGrid1.AutoGenerateColumns = true;
dataGrid1.ItemsSource = pageBean.lists;
}
//下一页
private void nextPage(object sender, RoutedEventArgs e)
{
int JumpPageNumber = int.Parse(jumpPageNumber.Text.ToString()) +1;
// 每页显示多少条
int TiaoshuNum = int.Parse(tiaoshuNum.Text.ToString());
PageBean<Maps> pageBean = pagemap.findByPage(JumpPageNumber, TiaoshuNum);
sunPage.Content = pageBean.totalPage;
jumpPageNumber.Text = pageBean.currPage.ToString();
dataGrid1.AutoGenerateColumns = true;
dataGrid1.ItemsSource = pageBean.lists;
}
}
}
updatePage.xaml
<Window x:Class="WpfApp4.updatePage"
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:WpfApp4"
mc:Ignorable="d"
Title="updatePage" Height="450" Width="800">
<Grid>
<Grid>
<Button Click="subberUpdate" Content="取消" HorizontalAlignment="Left" Height="35" Margin="194.5,340,0,0" VerticalAlignment="Top" Width="125"/>
<Button Content="取消" HorizontalAlignment="Left" Height="35" Margin="440.5,340,0,0" VerticalAlignment="Top" Width="125"/>
<Label Content="路径" HorizontalAlignment="Left" Margin="160,58,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="行政编码" HorizontalAlignment="Left" Margin="160,122.5,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="名字" HorizontalAlignment="Left" Margin="160,184,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="状态" HorizontalAlignment="Left" Margin="160,244.751,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" Width="80">
<Label.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-0.025"/>
<TranslateTransform/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,58,0,0" TextWrapping="Wrap" x:Name="PATH" VerticalAlignment="Top" Width="410"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,124,0,0" TextWrapping="Wrap" x:Name="XZDM" VerticalAlignment="Top" Width="410"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,186.24,0,0" TextWrapping="Wrap" x:Name="NAME" VerticalAlignment="Top" Width="410"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,245,0,0" TextWrapping="Wrap" x:Name="STATE" VerticalAlignment="Top" Width="410"/>
</Grid>
</Grid>
</Window>
updatePage.xaml.cs
using System;
using System.Collections.Generic;
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.Shapes;
namespace WpfApp4
{
/// <summary>
/// updatePage.xaml 的交互逻辑
/// </summary>
public partial class updatePage : Window
{
JDBCconfig jBCconfig = new JDBCconfig();
string idup = "";
public updatePage(Maps maps)
{
InitializeComponent();
PATH.Text = maps.PATH;
XZDM.Text = maps.XZDM;
NAME.Text = maps.NAME;
STATE.Text = maps.STATE;
idup = maps.ID;
}
private void subberUpdate(object sender, RoutedEventArgs e)
{
string path = PATH.Text.ToString().Trim();
string xzdm = XZDM.Text.ToString().Trim();
string name = NAME.Text.ToString().Trim();
string state = STATE.Text.ToString().Trim();
if (path=="")
{
MessageBox.Show("路径不可以为空");
return;
}
if (xzdm == "")
{
MessageBox.Show("行政编码不可以为空");
return;
}
if (name == "")
{
MessageBox.Show("名字不可以为空");
return;
}
if (state == "")
{
MessageBox.Show("状态不可以为空");
return;
}
string sqlStrng = string.Format(" UPDATE maps_table SET PATH = '{0}',XZDM = '{1}',`NAME` = '{2}',STATE = '{3}' WHERE ID = '{4}'", path, xzdm, name, state, idup);
jBCconfig.getmysqlread(sqlStrng);
jBCconfig.closeMySQL();
Close();
MessageBox.Show("修改成功");
}
}
}
addPage.xaml
<Window x:Class="WpfApp4.addPage"
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:WpfApp4"
mc:Ignorable="d"
Title="addPage" Height="450" Width="800">
<Grid>
<Button Click="subberAdd" Content="添加" HorizontalAlignment="Left" Height="35" Margin="194.5,340,0,0" VerticalAlignment="Top" Width="125"/>
<Button Content="取消" HorizontalAlignment="Left" Height="35" Margin="440.5,340,0,0" VerticalAlignment="Top" Width="125"/>
<Label Content="路径" HorizontalAlignment="Left" Margin="160,58,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="行政编码" HorizontalAlignment="Left" Margin="160,122.5,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="名字" HorizontalAlignment="Left" Margin="160,184,0,0" VerticalAlignment="Top" Width="80"/>
<Label Content="状态" HorizontalAlignment="Left" Margin="160,244.751,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" Width="80">
<Label.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="-0.025"/>
<TranslateTransform/>
</TransformGroup>
</Label.RenderTransform>
</Label>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,58,0,0" TextWrapping="Wrap" x:Name="PATH" VerticalAlignment="Top" Width="410"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,124,0,0" TextWrapping="Wrap" x:Name="XZDM" VerticalAlignment="Top" Width="410"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,241,0,0" TextWrapping="Wrap" x:Name="NAME" VerticalAlignment="Top" Width="410"/>
<TextBox HorizontalAlignment="Left" Height="23" Margin="245,182.5,0,0" TextWrapping="Wrap" x:Name="STATE" VerticalAlignment="Top" Width="410"/>
</Grid>
</Window>
addPage.xaml.cs
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
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.Shapes;
namespace WpfApp4
{
/// <summary>
/// addPage.xaml 的交互逻辑
/// </summary>
public partial class addPage : Window
{
public addPage()
{
InitializeComponent();
}
private void subberAdd(object sender, RoutedEventArgs e)
{
//获取ch
string PATH01= PATH.Text.ToString();
string XZDM01 = XZDM.Text.ToString();
string NAME01 = NAME.Text.ToString();
string STATE01 = STATE.Text.ToString();
JDBCconfig jBCconfig = new JDBCconfig();
//查询
string sqlStrng = string.Format("select * from maps_table where XZDM='{0}'", XZDM01);
MySqlDataReader sqlreader = jBCconfig.getmysqlread(sqlStrng);
if (sqlreader.Read())
{
MessageBox.Show("行政代码重复");
}
else
{
string strcmd = string.Format("insert into maps_table (PATH,XZDM,`NAME`,STATE) values ('{0}','{1}','{2}','{3}')", PATH01, XZDM01, NAME01, STATE01);
//添加数据
jBCconfig.getmysqlread(strcmd);
MessageBox.Show("添加成功");
jBCconfig.closeMySQL();
Close();
}
}
}
}
pageMap.cs
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApp4
{
class pageMap
{
public PageBean<Maps> findByPage(int currentPage,int pageSize)
{
JDBCconfig jDBCconfig = new JDBCconfig();
// Map<strsing, object> map = new Map<string, object>();
PageBean<Maps> pageBean = new PageBean<Maps>();
//封装当前页数
pageBean.currPage = currentPage;
//每页显示的数据
//int pageSize = 5;
pageBean.pageSize = pageSize;
//string sqlStrng = string.Format("DELETE FROM maps_table WHERE ID= '{0}'", id);
//封装总记录数
string allNumSQL = string.Format("select count(*) as numhang from maps_table");
MySqlDataReader sqlreader = jDBCconfig.getmysqlread(allNumSQL);
int totalCount = 0;
try{
while (sqlreader.Read())
{
object ssObject = sqlreader["numhang"];
totalCount = Convert.ToInt32(ssObject);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
pageBean.totalCount= totalCount;
//封装总页数
double tc = totalCount;
//向上取整
int num = (int) Math.Ceiling(tc / pageSize);
pageBean.totalPage =num;
//开始
int start = (currentPage - 1) * pageSize;
//每页多少条数
int size = pageBean.pageSize;
// map.put("start", (currentPage - 1) * pageSize);
// map.put("size", pageBean.getPageSize());
//封装每页显示的数据
string EveryPgeSQL = string.Format("SELECT * FROM maps_table LIMIT "+start+ ","+size);
//string EveryPgeSQL = string.Format(" select * from maps_table limit {0},{1}",start,size);
MySqlDataReader sqlreaderEveryPge = jDBCconfig.getmysqlread(EveryPgeSQL);
List<Maps> listMaps = new List<Maps>();
while (sqlreaderEveryPge.Read())
{
Maps map = new Maps();
map.ID = sqlreaderEveryPge["ID"].ToString();
map.PATH = sqlreaderEveryPge["PATH"].ToString();
map.XZDM = sqlreaderEveryPge["XZDM"].ToString();
map.NAME = sqlreaderEveryPge["NAME"].ToString();
map.STATE = sqlreaderEveryPge["STATE"].ToString();
map.ProvinceID = sqlreaderEveryPge["ProvinceID"].ToString();
map.ProvinceName = sqlreaderEveryPge["ProvinceName"].ToString();
map.CityID = sqlreaderEveryPge["CityID"].ToString();
map.CityName = sqlreaderEveryPge["CityName"].ToString();
map.CountyID = sqlreaderEveryPge["CountyID"].ToString();
map.CountyName = sqlreaderEveryPge["CountyName"].ToString();
map.TownID = sqlreaderEveryPge["TownID"].ToString();
map.TownName = sqlreaderEveryPge["TownName"].ToString();
map.VillageID = sqlreaderEveryPge["VillageID"].ToString();
map.VillageName = sqlreaderEveryPge["VillageName"].ToString();
listMaps.Add(map);
}
//放入每页显示的数据对象里进行返回
pageBean.lists = listMaps;
return pageBean;
}
}
}
PageBean.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApp4
{
class PageBean<T>
{
public int currPage { get; set; }//当前页数
public int pageSize { get; set; }//每页显示的记录数
public int totalCount { get; set; }//总记录数
public int totalPage { get; set; }//总页数
public List<T> lists { get; set; }//每页的显示的数据
}
}
maps.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApp4
{
public struct Maps
{
public string ID { get; set; }
public string PATH { get; set; }
public string XZDM { get; set; }
public string NAME { get; set; }
public string STATE { get; set; }
public string ProvinceID { get; set; }
public string ProvinceName { get; set; }
public string CityID { get; set; }
public string CityName { get; set; }
public string CountyID { get; set; }
public string CountyName { get; set; }
public string TownID { get; set; }
public string TownName { get; set; }
public string VillageID { get; set; }
public string VillageName { get; set; }
}
}
JDBCconfig.cs
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApp4
{
class JDBCconfig
{
/// <summary>
/// 建立数据库连接.
/// </summary>
/// <returns>返回MySqlConnection对象</returns>
public MySqlConnection getmysqlcon()
{
string M_str_sqlcon = "xxxxxxxxxx路径;port=3307;user id=root;password=xxxx-;database=znyg_rs"; //根据自己的设置
MySqlConnection myCon = new MySqlConnection(M_str_sqlcon);
return myCon;
}
/// <summary>
/// 创建一个MySqlDataReader对象
/// </summary>
/// <param name="M_str_sqlstr">SQL语句</param>
/// <returns>返回MySqlDataReader对象</returns>
public MySqlDataReader getmysqlread(string M_str_sqlstr)
{
MySqlConnection mysqlcon = this.getmysqlcon();
MySqlCommand mysqlcom = new MySqlCommand(M_str_sqlstr, mysqlcon);
mysqlcon.Open();
MySqlDataReader mysqlread = mysqlcom.ExecuteReader(CommandBehavior.CloseConnection);
return mysqlread;
}
//关闭连接
public void closeMySQL()
{
MySqlConnection myCon = getmysqlcon();
myCon.Close();
}
}
}