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();//初始化数据库文件为1Minstanse.SetProperty("perst.file.extension.quantum", 1024 * 1024);//数据库大小不够时,每次增加512Kinstanse.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,如需转载请自行联系原作者

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

  1. Silverlight实用窍门系列:59.多个中心点联动多线的可拖动控件扩展为拓扑图

    在本系列的第17篇文章中"Silverlight实用窍门系列:17.中心点联动多线的可拖动控件(绘制工程图.拓扑图基础) ",制作了基本的中心联动图标.有园友对此图的扩展不是很清晰 ...

  2. Silverlight实用窍门系列:71.Silverlight的Style

    此文章实例基于Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary,如有数据源疑问请参考该文章. 在Silverlight中的Style相当于 ...

  3. Silverlight实用窍门大集合+Silverlight 5 最全新特性【目录索引】

    在最近的几个月内整理出了Silverlight的一些相关的比较实用的功能讲解文章,并且随着Silverlight 5 beta版本的发布整理出的新特性系列文章,在这里做一个总的概括和索引,以方便大家观 ...

  4. Silverlight实用窍门系列:40.Silverlight中捕捉视频,截图保存到本地

    在Silverlight中我们可以捕捉视频设备以制作视频会议系统,或者通过视频设备截图功能上传头像等功能. 下面我们通过一个简单的实例来访问视频设备,并且截取图像下载该截图文件至本地. 一.在Silv ...

  5. Silverlight实用窍门系列:61.Silverlight中的Trigger触发器,自定义翻页触发器

    在Silverlight应用程序和客户进行交互工作的时候可以不用写后台代码而通过Xaml代码来实现,在本文我们将学习了解Trigger触发器. Trigger触发器:引发动作的因素,比如鼠标点击.键盘 ...

  6. Silverlight实用窍门系列:35.细解Silverlight冒泡路由事件和注册冒泡路由事件【附带实例源码】...

    Silverlight中的事件分为普通事件和冒泡路由事件,它并没有包括WPF中的隧道路由事件,在本章中将详细讲解冒泡路由事件和如何注册一个冒泡路由事件. 一.细解冒泡路由事件 冒泡路由事件可以比喻为: ...

  7. Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】...

    在Silverlight程序(非Out of Browser模式)中是无法直接调用DLL的,但是很多的计算或者其他应用程序的调用中我们需要用到DLL的加载.比如调用DLL来识别身份证读卡器传输过来 ...

  8. Silverlight实用窍门系列:66.Silverlight的数据模板DataTemplate(二)获取数据模板控件...

    在Silverlight中我们使用了数据模板,在很多时候也需要获取到数据模板上的控件,并且进行改变.本文使用的实例数据源和上节相同,如需了解请下载源码查看. 当然在这里我们可以分为获取数据模板原始控件 ...

  9. Silverlight实用窍门系列:65.Silverlight的数据模板DataTemplate(一)使用数据模板

    在Silverlight中,我们的数据列表显示控件有ListBox.DataGrid等.对于显示出来的数据条目样式外观的管理是通过DataTemplate(数据模板)来完成的.本节将从DataTemp ...

最新文章

  1. 在线编辑器 上传控件
  2. matlab 算法集锦
  3. gogs可以自动化部署吗_Git-WebHook 自动化部署工具 - 支持Github / GitLab / Gogs / GitOsc...
  4. 面向过程、面向函数、面向对象的区别浅谈
  5. ftp文档服务器设置,ftp服务器基本设置
  6. 思科修复运营商级路由器中的两个已遭利用漏洞
  7. Excel如何快速提取红色字体文本
  8. 红外测距模块 51单片机_基于51单片机的红外发射和接收程序。
  9. 深蓝儿童破解2012世界末日预言(转)
  10. 清华大学python教材怎么样_经典!清华大学计算机系教材曝光:《Python编程金典》...
  11. 一键DDOS防火墙安装程序
  12. Minecraft 1.18.1、1.18.2模组开发 19.拼图结构建筑(JigSaw Structure)
  13. thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现
  14. cad转图片,cad图纸该如何转换成svg格式图片呢?
  15. 【不全】网络工程师术语表
  16. Properties综合应用,冲冲冲
  17. 程序员的中年危机好可怕
  18. 关于正负样本不平衡问题的解决方法收集整理
  19. JS中的close()方法
  20. 索泰新款 ZBox 怎么样

热门文章

  1. CentOS 7.3:LAMP 动静分离部署
  2. 批量ssh免密登陆远程主机
  3. zabbix常见报错
  4. mysql迁移数据目录,这个坑你遇到过吗?
  5. 【Python-2.7】大小写转换函数
  6. 解决CentOS无法解析域名的问题
  7. 解决ajax回调函数无返回值得问题
  8. JS之经典for循环闭包问题解决方法
  9. Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO) 的解决方法
  10. 是否有“他们的”版本的“git merge -s ours”?