开发者社区> 橘子红了呐> 正文

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 下载。


本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2012/08/27/2657534.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MODIS数据的简介和下载(二)——MODIS数据下载方式(FTP)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ESA_DSQ/article/details/70171937 前一篇我们已经介绍了MODIS数据的简介、参数以及相关的典型应用。
1443 0
使用IoT Studio经济高效地完成物联网应用开发(含DEMO)
IoT Studio原Link Develop,是阿里云整合在应用开发领域的丰富经验倾力打造的一站式、低成本、高稳定、易定制的物联网生产力工具,旨在帮助用户经济高效的完成物联网应用开发。
13031 0
数据中台核心方法论--OneModel为何需要产品化支撑?
作者:渊洛 转自:阿里巴巴数据中台官网 https://dp.alibaba.com 什么是产品化大部分创业公司都是从一个伟大的想法创意开始的,并且需要有一堆技术专家来实现。我们清楚,伟大的技术并不等同于和伟大的产品,技术可以解决问题,但如果它没有办法法规模化,那这些技术或者能力对用户便没有直接价值,只有把它们拆解,打包,设计成产品,才能真正的解决用户问题,把某些技术或者能力变成产品的过程这个过程,就是产品化。
6839 0
使用OpenFiler来模拟存储配置RAC中ASM共享盘及多路径(multipath)的测试
第一章 本篇总览   之前发布了一篇《Oracle_lhr_RAC 12cR1安装》,但是其中的存储并没有使用多路径,而是使用了VMware自身提供的存储。
1769 0
使用delphi 10.2 开发linux 上的Daemon
delphi 10.2 支持linux, 而且官方只是支持命令行编程,目地就是做linux 服务器端的开发。 既然是做linux服务器端的开发,那么普通的命令行运行程序,然后等待开一个黑窗口的方式就 太low了(目前就有个别语言大咖,经常在Windows 上开个黑窗口,看起来非常恶心),那么如果 避免这个尴尬的问题?     其实Linux 下也有类似windows 服务的功能,Linux Daemon 就是其中的一种方式,命令行运行后 直接返回,同时在后台建立一个同样的进程。
1453 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
10623 0
3402
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载