zoukankan      html  css  js  c++  java
  • wp7独立存储之本地数据库

    wp7可以在独立存储区里创建数据库,但并不是非常简单,起码对于silverlight里的Linq to sql 类来说算是复杂的了。

    在silverlight里,可以先外面定义好数据库,然后通过linqtosql类自动在逻辑代码里映射出对应的实体类和上下文类;

    而在wp7里,要先在逻辑代码里定义好实体类、上下文类,然后通过创建上下文类的实例来在独立存储区里创建数据库。

    不废话,直接上代码,该说的都已经在注释里了:

    View Code
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Net;
     5 using System.Windows;
     6 using System.Windows.Controls;
     7 using System.Windows.Documents;
     8 using System.Windows.Input;
     9 using System.Windows.Media;
    10 using System.Windows.Media.Animation;
    11 using System.Windows.Shapes;
    12 using Microsoft.Phone.Controls;
    13 
    14 using System.Data.Linq;
    15 using System.Data.Linq.Mapping;
    16 
    17 namespace IsoStore
    18 {
    19     public partial class MainPage : PhoneApplicationPage
    20     {
    21         //定义链接字符串。isostore:/ 表示位于独立存储区里 file.sdf 表示数据库的名字
    22         static string connectionString = "Data Source='isostore:/file.sdf'";
    23 
    24         // 构造函数
    25         public MainPage()
    26         {
    27             InitializeComponent();
    28             this.button1.Click += new RoutedEventHandler(button1_Click);
    29 
    30             //创建上下文类(数据链接)的实例——对应着具体的数据库
    31             using(StuContext stuCent = new StuContext(connectionString))
    32             {
    33                
    34                 //stuCent.DeleteDatabase();删除数据库
    35 
    36                 //如果数据库不存在就创建
    37                 if (!stuCent.DatabaseExists())
    38                 {
    39                     //创建数据库,同时创建数据库里的表
    40                     stuCent.CreateDatabase();
    41                    
    42                 }
    43             }      
    44 
    45         }
    46 
    47 
    48         void button1_Click(object sender, RoutedEventArgs e)
    49         {
    50             using (StuContext stuCent = new StuContext(connectionString))
    51             {
    52                 Stu stu1 = new Stu(); //实体类的一个实例,相当于数据库表里的一条数据
    53 
    54                 //给实体类的StuName赋值。StuID不用赋值,它是由数据库自动赋值的,IsDbGenerated = true
    55                 stu1.StuName = "小白2号";
    56 
    57                 //把stu1插入到 Students表里。这一步只是插入到内存里的副本
    58                 stuCent.Students.InsertOnSubmit(stu1);
    59 
    60                 //这里才是真正把对数据库的修改写进数据库
    61                 stuCent.SubmitChanges();
    62             }
    63         }
    64 
    65 
    66 
    67         //定义一个实体类,数据库里每张表都要一个实体类相对应映射
    68         //[Table(Name = "Student")] 表示该类映射成数据库里的一张表,表名为 student。
    69         //如果Table没有Name特性,则用实体类的名字作为表名
    70         [Table(Name = "Student")]
    71         public class Stu
    72         {
    73             //定义类的属性,映射到表的列。特性 IsPrimaryKey 表明是否为主键,
    74             //IsDbGenerated表示是否自增长(若值为true则有数据库自动赋值)
    75             [Column(IsPrimaryKey = true, IsDbGenerated = true)]// CanBeNull = false, AutoSync = AutoSync.OnInsert)
    76             public int StuID { set; get; }
    77 
    78             //定义类的属性
    79             [Column(CanBeNull = true)]
    80             public string StuName { set; get; }
    81         }
    82 
    83 
    84 
    85         //定义上下文类,亦即是数据链接。该类的实例才是对应着具体的数据库
    86         //该类继承DataContext,重点在于父类的内容,核心内容都在父类里实现了
    87         public class StuContext:DataContext
    88         {
    89             //构造函数,同时调用基类构造函数,使用相同的链接字符串作为参数。
    90             public StuContext(string connectionString)
    91                 : base(connectionString)
    92             { }
    93 
    94             //定义属性。从该属性的类型可以明显看出这对应着数据库的一张表
    95             public Table<Stu> Students;
    96  
    97         }
    98     }
    99 }

    在这里推荐一个管理wp7独立存储区的工具——isostoreSpy,这工具可是灰常强大,具体使用也很简单,有机会再说

  • 相关阅读:
    Mysql初探:内存数据刷盘机制
    数据管理流程,基础入门简介
    数据分析:复杂业务场景下,量化评估流程
    架构设计:服务自动化部署和管理流程
    Hadoop框架:MapReduce基本原理和入门案例
    架构设计:微服务模式下,实现灰度发布模式
    架构设计:分布式结构下,服务部署发布
    编码风格:Mvc模式下SSM环境,代码分层管理
    开发工具:Mybatis.Plus.插件三种方式的逆向工程
    Hadoop框架:HDFS高可用环境配置
  • 原文地址:https://www.cnblogs.com/zouzf/p/2454501.html
Copyright © 2011-2022 走看看