您的位置:首页 > 数据库

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

2012-08-27 11:39 531 查看
  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 下载。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐