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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM