做一個小實例,如下圖,
1、設計數據庫access:
2、在vs2013中創建wpf,把上數據庫保存為db.mdb拷貝到項目下,並打開App.config文件添加數據庫連接字符串
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" /> </startup> <connectionStrings> <add name="conn" connectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False" /> </connectionStrings> </configuration>
3、創建連接數據庫的類
public class DbHelper { public static OleDbConnection getCon(){ string strcon = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ToString(); return new OleDbConnection(strcon); } }
4、創建Model類
public class Person { public string username { get; set; } public string pwd { get; set; } public int age { get; set; } public DateTime createdate { get; set; } public DateTime updatedate { get; set; } public string classroom { get; set; } public int id { get; set; } }
5、在mainwindow.cs類中添加數據和綁定數據
private Random rnd = new Random(); private ObservableCollection<Person> list { get; set; } public MainWindow() { InitializeComponent(); add();//添加數據 BindData();//綁定數據 cr.ItemsSource = new List<string> { "一班", "二班", "三班" }; } public void BindData() { using (var conn = DbHelper.getCon()) { list = new ObservableCollection<Person>(conn.Query<Person>("select * from users").ToList<Person>()); } this.DataContext = list; } public void add() { using (var db = DbHelper.getCon()) { for (int i = 0; i < 10; i++) { db.Execute("insert into users(username,pwd,age,createDate,classroom) values(@username,@pwd,@age,@createDate,@classroom)", new { username = "張三", pwd = "123", age = rnd.Next(20), createDate=DateTime.Now.ToString(), classroom = "一班" }); } } }
6、界面設計:
<Window x:Class="WpfApplication3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> <RowDefinition Height="auto"/> <RowDefinition Height="22"/> </Grid.RowDefinitions> <TextBlock Text="access數據基本讀寫操作"></TextBlock> <DataGrid Grid.Row="1" Name="dg" ItemsSource="{Binding}" CanUserAddRows="False" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="姓名" Binding="{Binding username}" Width="100"></DataGridTextColumn> <DataGridTextColumn Header="密碼" Binding="{Binding pwd}"></DataGridTextColumn> <DataGridTextColumn Header="年齡" Binding="{Binding age}"></DataGridTextColumn> <DataGridTextColumn Header="添加時間" Binding="{Binding createdate}"></DataGridTextColumn> <DataGridTextColumn Header="更新時間" Binding="{Binding updatedate}"></DataGridTextColumn> <DataGridComboBoxColumn x:Name="cr" Header="班級" SelectedItemBinding="{Binding classroom}"></DataGridComboBoxColumn> </DataGrid.Columns> </DataGrid> <WrapPanel Grid.Row="2" DataContext="{Binding ElementName=dg,Path=SelectedItem}"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="姓名:"/> <TextBlock MinWidth="100" Text="{Binding username}"/> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="密碼:"/> <TextBlock MinWidth="100" Text="{Binding pwd}"/> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="年齡:"/> <TextBlock MinWidth="100" Text="{Binding age}"/> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="添加時間:"/> <TextBlock MinWidth="100" Text="{Binding createdate}"/> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="更新時間:"/> <TextBlock MinWidth="100" Text="{Binding updatedate}"/> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock Text="班級:"/> <TextBlock MinWidth="100" Text="{Binding classroom}"/> </StackPanel> </WrapPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row="3" > <Button Content="刷新" Height="22" VerticalAlignment="Top" Click="Button_Click" /> <Button Content="更新" Click="Button_Click_1"/> </StackPanel> </Grid> </Window>
7、對刷新 和更新按鈕添加事件:
private void Button_Click(object sender, RoutedEventArgs e) { BindData(); } private void Button_Click_1(object sender, RoutedEventArgs e) { var p=dg.SelectedItem as Person; if (p == null) { MessageBox.Show("請選擇要更新的行"); return; } using (var conn = DbHelper.getCon()) { conn.Execute("update users set username=@username,pwd=@pwd,age=@age,createdate=@c,updatedate=@u,classroom=@classroom where id=@id", new { username=p.username,pwd=p.pwd,age=p.age,c=p.createdate,u=p.updatedate,classroom=p.classroom ,id=p.id }); MessageBox.Show("ok"); } }
