Silverlight实用窍门系列:74.Silverlight使用Perst数据库Demo

简介:

  Perst是一个简单、快速、便捷的面向Java和.Net的数据库。它可以直接将.net对象存储,在Silverlight不需要web service的方式进行读写,而是直接读写。

  本文将编写一个实例进行perst的操作,下载一个PerstSilverlight.dll,然后引用它。

  首先:在App.xaml.cs中Application_Startup()中建立Perst数据库的实例,在Application.Exit()中关闭Perst数据库。

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //应用程序开启时打开数据库
            Storage instanse = StorageFactory.Instance.CreateStorage();
            //初始化数据库文件为1M
            instanse.SetProperty("perst.file.extension.quantum", 1024 * 1024);
            //数据库大小不够时,每次增加512K
            instanse.SetProperty("perst.extension.quantum", 512 * 1024);
            instanse.Open("SLDemo.dbs");
            db = new Database(instanse);
            this.RootVisual = new MainPage();
        }

        private void Application_Exit(object sender, EventArgs e)
        {
            //应用程序关闭时关闭数据库连接
            db.Storage.Close();
        }

  其次:建立一个实体类继承于Persistent,定义为索引的字段必须设置为Public。

    /// <summary>
    /// 城市类
    /// </summary>
    public class City : Persistent
    {
        //定义为索引
        [FullTextIndexable]
        public string _CityName;

        /// <summary>
        /// 城市名称
        /// </summary>
        public string CityName
        {
            get { return _CityName; }
            set { _CityName = value; }
        }

        [FullTextIndexable]
        public string _CityNum;

        /// <summary>
        /// 城市电话区号
        /// </summary>
        public string CityNum
        {
            get { return _CityNum; }
            set { _CityNum = value; }
        }

        public override void OnLoad()
        {
            base.OnLoad();
        }

        //删除
        public override void Deallocate()
        {
            base.Deallocate();
        }
    }

  再次:实现前台界面的事件,并实现它。

    public partial class MainPage : UserControl
    {

        public MainPage()
        {
            InitializeComponent();

        }

        private void GetNum_1(object sender, RoutedEventArgs e)
        {
            BindCity();
        }

        /// <summary>
        /// 绑定所有的城市,并且按照CityNum排序
        /// </summary>
        private void BindCity()
        {
            List<City> list = App.db.Select<City>("order by CityNum").ToList();
            this.dgrid.ItemsSource = list;
        }

        /// <summary>
        /// 查找到021号码的区号对象并且删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteNum_2(object sender, RoutedEventArgs e)
        {
            City city = App.db.Select<City>("CityNum='021'").FirstOrDefault();
            city.Deallocate();
            App.db.Storage.Commit();
            BindCity();
        }

        /// <summary>
        /// 查找到020区号的对象进行修改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void EditNum_4(object sender, RoutedEventArgs e)
        {
            City city = App.db.Select<City>("CityNum='020'").FirstOrDefault();
            city.CityName = "上海市";
            city.Store();
            App.db.UpdateFullTextIndex(city);
            BindCity();
        }

        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AddNum_3(object sender, RoutedEventArgs e)
        {
            App.db.AddRecord(new City() { CityName = "广州", CityNum = "021" });
            App.db.AddRecord(new City() { CityName = "北京", CityNum = "010" });
            App.db.AddRecord(new City() { CityName = "上海", CityNum = "020" });
            App.db.AddRecord(new City() { CityName = "成都", CityNum = "028" });
            App.db.Storage.Commit();
        }
    }

  最后我们来看前台界面Xaml如下:

    <Grid x:Name="LayoutRoot" Background="White">
        <sdk:DataGrid Name="dgrid" HorizontalAlignment="Left" Height="181" 
                Margin="10,80,0,0" VerticalAlignment="Top" Width="338"/>
        <Button Content="增加数据" HorizontalAlignment="Left" Margin="42,10,0,0"
                VerticalAlignment="Top" Width="75" Click="AddNum_3"/>
        <Button Content="获取值" HorizontalAlignment="Left" Margin="160,10,0,0"
                VerticalAlignment="Top" Width="75" Click="GetNum_1"/>
        <Button Content="修改值" HorizontalAlignment="Left" Margin="42,48,0,0"
                VerticalAlignment="Top" Width="75" Click="EditNum_4"/>
        <Button Content="删除值" HorizontalAlignment="Left" Margin="160,48,0,0"
                VerticalAlignment="Top" Width="75" Click="DeleteNum_2"/>
    </Grid>

  下面是效果图片,如需源码请点击 SLPerstDemo.rar 下载。



本文转自程兴亮 51CTO博客,原文链接:http://blog.51cto.com/chengxingliang/974152

相关文章
|
4月前
|
SQL 前端开发 Java
Hasor【环境搭建 01】SpringBoot集成Dataway接口配置服务(依赖+配置+数据库数据源初始化+注解添加+demo验证测试)
Hasor【环境搭建 01】SpringBoot集成Dataway接口配置服务(依赖+配置+数据库数据源初始化+注解添加+demo验证测试)
73 0
|
4月前
|
存储 NoSQL 容灾
Neo4j【环境部署 01】图形数据库(简介+下载地址+安装+配置+demo源码+学习教程地址)
Neo4j【环境部署 01】图形数据库(简介+下载地址+安装+配置+demo源码+学习教程地址)
107 1
|
存储 JavaScript 前端开发
基于 LeanCloud 的Serverless云存储数据库留言板Demo
基于 LeanCloud 的Serverless云存储数据库留言板Demo
81 0
基于 LeanCloud 的Serverless云存储数据库留言板Demo
|
Java 关系型数据库 MySQL
【Java】Java连接Mysql数据库的demo示例
【Java】Java连接Mysql数据库的demo示例
203 0
【Java】Java连接Mysql数据库的demo示例
|
存储 JavaScript 前端开发
基于 LeanCloud 的Serverless云存储数据库留言板Demo
基于 LeanCloud 的Serverless云存储数据库留言板Demo
63 0
基于 LeanCloud 的Serverless云存储数据库留言板Demo
|
SQL Java 数据库
安卓Jetpack组件Room数据库框架的使用(附Demo)
安卓Jetpack组件Room数据库框架的使用(附Demo)
296 0
安卓Jetpack组件Room数据库框架的使用(附Demo)
|
存储 JavaScript 前端开发
基于 LeanCloud 的Serverless云存储数据库留言板Demo
基于 LeanCloud 的Serverless云存储数据库留言板Demo
136 0
|
6天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
37 2
|
22天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
105 0
|
22天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)

热门文章

最新文章