WPF以access為數據庫,簡單實現一個顯示數據和更新數據的實例


做一個小實例,如下圖,

 

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");
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM