WindowsPhone8 数据库增删改查_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > WindowsPhone8 数据库增删改查

WindowsPhone8 数据库增删改查

 2013/10/31 10:14:06  yangshuxin199393  博客园  我要评论(0)
  • 摘要:今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出!1.这就是一个简单wp8数据库增删改查1.创建数据表Person[Table]publicclassPerson:INotifyPropertyChanged,INotifyPropertyChanging{///<summary>///编号///</summary>privateintid;[Column(IsPrimaryKey=true,IsDbGenerated=true
  • 标签:Windows 数据库 数据 WindowsPhone

今天第一次在博客园发表文章,如果有的地方写的不对,还请大家指出!

 

1.这就是一个简单wp8数据库增删改查

 

1.创建数据表Person 

    [Table]
    public class Person : INotifyPropertyChanged, INotifyPropertyChanging
    {
        /// <summary>
        /// 编号
        /// </summary>
        private int id;
        [Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
        public int Id
        {
            get { return id; }
            set
            {
                if (id != value)
                {
                    NotifyPropertyChanging("Id");
                    id = value;
                    NotifyPropertyChanged("Id");
                }
            }
        }
        /// <summary>
        /// 姓名
        /// </summary>
        private string name;
        [Column]
        public string Name
        {
            get { return name; }
            set
            {
                if (name != value)
                {
                    NotifyPropertyChanging("Name");
                    name = value;
                    NotifyPropertyChanged("Name");
                }
            }
        }

        /// <summary>
        /// 年龄
        /// </summary>
        private int age;
        [Column]
        public int Age
        {
            get { return age; }
            set
            {
                if (age != value)
                {
                    NotifyPropertyChanging("Age");
                    age = value;
                    NotifyPropertyChanged("Age");
                }
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
        /// <summary>
        /// 用来通知页面表的字段数据产生了改变
        /// </summary>
        /// <param name="propertyName"></param>
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
        public event PropertyChangingEventHandler PropertyChanging;
        /// <summary>
        /// 用来通知数据上下文表的字段数据将要产生改变
        /// </summary>
        /// <param name="propertyName"></param>
        private void NotifyPropertyChanging(string propertyName)
        {
            if (PropertyChanging != null)
            {
                PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
            }
        }
    }

 

2.创建数据库的DataContext对象

  public class PersonContext : DataContext
    {

        public PersonContext(string connection)
            : base(connection)
        {
        }

        public Table<Person> Person;
    }

 

3.创建页面数据绑定的集合

  public class PersonCollection : INotifyPropertyChanged
    {
        private ObservableCollection<Person> personList;
        public ObservableCollection<Person> PersonList
        {
            get { return personList; }
            set
            {
                if (personList != value)
                {
                    personList = value;
                    NotifyPropertyChanged("PersonList");
                }
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

 

4.在程序加载过程中进行创建数据库

           //如果数据库不存在就创建一个数据库
            using (PersonContext dbPerson = new PersonContext(ConnectString))
            {
                if (dbPerson.DatabaseExists() == false)
                {
                    dbPerson.CreateDatabase();
                }
            }

 

5.实现person增删改查操作

  MainPage.xaml.cs代码:

   public partial class MainPage : PhoneApplicationPage
    {
        private PersonContext PersonDB;
        private PersonCollection PersonCollection = new PersonCollection();
        // 构造函数
        public MainPage()
        {
            InitializeComponent();
            //连接数据并初始化一个Context对象
            PersonDB = new PersonContext(App.ConnectString);
            var person = from Person p in PersonDB.Person select p;//获取Person表中所有的数据
            PersonCollection.PersonList = new ObservableCollection<Person>(person);//将查询的结果返回到页面数据绑定的集合里面
            this.DataContext = PersonCollection;//赋值给当前页面的DataContext用于数据绑定
        }
        private int? ConvertTo(object obj)
        {
            try
            {
                return Convert.ToInt32(obj);
            }
            catch { }
            return null;
        }
        private void BtnOk_OnClick(object sender, RoutedEventArgs e)
        {
            string age = this.Age.Text.Trim();
            string name = this.Name.Text.Trim();
            if (string.IsNullOrEmpty(age) || string.IsNullOrEmpty(name))
            {
                MessageBox.Show("姓名和年龄都不能为空!");
            }
            else if (ConvertTo(age) == null)
            {
                MessageBox.Show("您输入的年龄不合法!");

            }
            else
            {
                if (State.Count > 0 && State["person"] != null)//判断State中是否有Key为person的值,如果有则进行编辑,否则就进行新增
                {
                    Person p = State["person"] as Person;
                    p.Name = name;
                    p.Age = Convert.ToInt32(ConvertTo(age));
                    PersonDB.SubmitChanges();//保存数据库的改变
                    PersonCollection.PersonList.Add(p);//将要修改的对象放到数据集合中
                    State["person"] = null;
                }
                else
                {
                    Person p = new Person() { Age = Convert.ToInt32(ConvertTo(age)), Name = name };
                    PersonCollection.PersonList.Add(p);//将要新增的对象放到集合中
                    PersonDB.Person.InsertOnSubmit(p);//新增到数据库
                    PersonDB.SubmitChanges();//保存数据库的改变
                }
                this.Name.Text = "";
                this.Age.Text = "";
            }
        }

        private void BtnDelete_OnClick(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            if (button != null)
            {
                Person person = button.DataContext as Person;
                PersonCollection.PersonList.Remove(person);
                PersonDB.Person.DeleteOnSubmit(person);
                PersonDB.SubmitChanges();
            }
        }

        private void BtnEdit_OnClick(object sender, RoutedEventArgs e)
        {
            Button button = sender as Button;
            if (button != null)
            {
                Person person = button.DataContext as Person;
                this.Name.Text = person.Name;
                this.Age.Text = person.Age.ToString();
                State["person"] = person;
                PersonCollection.PersonList.Remove(person);
            }
        }
    }

 MainPage.xaml代码:

 

<phone:PhoneApplicationPage
    x:Class="WPCRUD.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True"
    xmlns:controls="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls"
    >
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid x:Name="ContentPanel" Grid.Row="0" Margin="12,0,12,0">
            <controls:Pivot>
                <controls:PivotItem Header="WPCRUD">
                    <ListBox Name="PersonListBox" ItemsSource="{Binding PersonList}">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Grid HorizontalAlignment="Stretch" Width="460">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="70" />
                                        <ColumnDefinition Width="70" />
                                        <ColumnDefinition Width="100" />
                                        <ColumnDefinition Width="100" />
                                        <ColumnDefinition Width="100" />
                                    </Grid.ColumnDefinitions>
                                    <TextBlock 
                    Text="{Binding Id}" 
                    FontSize="{StaticResource PhoneFontSizeLarge}" 
                    Grid.Column="0"  
                    VerticalAlignment="Top" Margin="0, 12, 10, 0"/>
                                    <TextBlock 
                    Text="{Binding Age}" 
                    FontSize="{StaticResource PhoneFontSizeLarge}" 
                    Grid.Column="1"  
                    VerticalAlignment="Top" Margin="0, 12, 5, 0"/>
                                    <TextBlock 
                    Text="{Binding Name}" 
                    FontSize="{StaticResource PhoneFontSizeLarge}" 
                    Grid.Column="2" 
                    VerticalAlignment="Top" Margin="0, 12, 5, 0" />
                                    <Button BorderThickness="0"  Name="btnDelete"  Click="BtnDelete_OnClick"  Grid.Column="3"    Margin="-5, -18, 0, 0">
                                        <Image 
                    Source="Assets/appbar.delete.rest.png"
                    Height="75"
                    Width="75"/>
                                    </Button>
                                    <Button BorderThickness="0" Name="btnEdit" Click="BtnEdit_OnClick"   Grid.Column="4"    Margin="-5, -18, 0, 0">
                                        <Image 
                    Source="Assets/appbar.check.rest.png"
                    Height="75"
                    Width="75"/>
                                    </Button>
                                </Grid>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PivotItem>
            </controls:Pivot>
        </Grid>
        <StackPanel x:Name="AddPanel" Grid.Row="1" Margin="12,0,12,0">
            <TextBlock Text="姓名:"/>
            <TextBox x:Name="Name"/>
            <TextBlock Text="年龄:"/>
            <TextBox x:Name="Age"/>
            <Button Content="保存" Name="btnOk"  Click="BtnOk_OnClick"></Button>
        </StackPanel>
    </Grid>
</phone:PhoneApplicationPage>

 

代码下载:WPCRUD.zip

发表评论
用户名: 匿名