[WP8本地数据库01]班级管理-创建数据库
2014-01-15 17:29
453 查看
WP8的本地数据库是面向对象型的数据库,所以他的表就是一个实现了System.ComponentModel.INotifyPropertyChanged和System.ComponentModelINotifyPropertyChanging接口,并标识System.Data.Linq.Mapping. TableAttribute特性的类
下面是一个班级表
然后给班级表增加“编号”、“学年”、“班主任”,“序号”这几个字段
字段是通过定义标识System.Data.Linq.Mapping. ColumnAttribute的属性作为表的字段,并且要调用PropertyChanging,和PropertyChanged事件
对于Column特性,我要会经常设置的内容:
DbType:获取或设置数据库列的类型。
IsPrimaryKey:获取或设置一个值,该值指示该类成员是否表示作为表的整个主键或部分主键的列。
CanBeNull:获取或设置一个值,该值指示列是否可包含 null 值。
IsDbGenerated:获取或设置一个值,该值指示列是否包含数据库自动生成的值。
比如我要设置一个不自增、不为空的char(5)类型主键:
更多DbType的相关信息请访问:http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.columnattribute.dbtype(v=vs.110).aspx
有关Column的其他内容,请访问http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.columnattribute_properties(v=vs.110).aspx
一个完整的班级表
创建了表类,我们还没能直接使用,在WP8中是通过DataContext类的子类来作为一个代理类操作数据库的
类型为Table<T> 的公开字段就是表对象,字段名和类型名一样(不一样需要另外配置,暂不说)
数据库的链接字符串格式是:
在App.xaml.cs文件的构造函数中使用如下代码创建数据库
下班了,今天就写创建数据库好了,接下来还有操作数据库,要注意的事项和高级应用(比如表间关系的设置),最终会完成一个辅助管理班级的app。
下面是一个班级表
1 /// <summary> 2 /// 班级表 3 /// </summary> 4 [System.Data.Linq.Mapping.Table] 5 public class Class:INotifyPropertyChanged, INotifyPropertyChanging 6 { 7 public event PropertyChangingEventHandler PropertyChanging; 8 9 public event PropertyChangedEventHandler PropertyChanged; 10 }
然后给班级表增加“编号”、“学年”、“班主任”,“序号”这几个字段
字段是通过定义标识System.Data.Linq.Mapping. ColumnAttribute的属性作为表的字段,并且要调用PropertyChanging,和PropertyChanged事件
对于Column特性,我要会经常设置的内容:
DbType:获取或设置数据库列的类型。
IsPrimaryKey:获取或设置一个值,该值指示该类成员是否表示作为表的整个主键或部分主键的列。
CanBeNull:获取或设置一个值,该值指示列是否可包含 null 值。
IsDbGenerated:获取或设置一个值,该值指示列是否包含数据库自动生成的值。
比如我要设置一个不自增、不为空的char(5)类型主键:
private string _ID; /// <summary> /// 属性的注释 /// </summary> [Column(AutoSync=AutoSync.OnInsert, IsDbGenerated=false, CanBeNull=false, DbType="char(5)")] public string ID { get { return this._ID; } set { if (this._ID != value) { NotifyPropertyChanging(); this._ID = value; NotifyPropertyChanged(); } } }
更多DbType的相关信息请访问:http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.columnattribute.dbtype(v=vs.110).aspx
有关Column的其他内容,请访问http://msdn.microsoft.com/zh-cn/library/system.data.linq.mapping.columnattribute_properties(v=vs.110).aspx
一个完整的班级表
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data.Linq.Mapping; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace WP8DBStudy.DB { /// <summary> /// 班级表 /// </summary> [System.Data.Linq.Mapping.Table] public class Class:INotifyPropertyChanged, INotifyPropertyChanging { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public event PropertyChangingEventHandler PropertyChanging; private void NotifyPropertyChanging([CallerMemberName] String propertyName = "") { if (PropertyChanging != null) { PropertyChanging(this, new PropertyChangingEventArgs(propertyName)); } } private int _OrderBy; /// <summary> /// 序号 /// </summary> [Column(IsDbGenerated=true)] public int OrderBy { get { return this._OrderBy; } set { if (this._OrderBy != value) { NotifyPropertyChanging(); _OrderBy = value; NotifyPropertyChanged(); } } } private string _ID; /// <summary> /// 属性的注释 /// </summary> [Column(AutoSync=AutoSync.OnInsert, IsDbGenerated=false, CanBeNull=false, DbType="NCHAR(5)")] public string ID { get { return this._ID; } set { if (this._ID != value) { NotifyPropertyChanging(); this._ID = value; NotifyPropertyChanged(); } } } private string _Grade; /// <summary> /// 学年 /// </summary> [Column] public string Grade { get { return this._Grade; } set { if (this._Grade != value) { NotifyPropertyChanging(); this._Grade = value; NotifyPropertyChanged(); } } } private string _HeadTeacher; /// <summary> /// 班主任 /// </summary> [Column] public string HeadTeacher { get { return this._HeadTeacher; } set { if (this._HeadTeacher != value) { NotifyPropertyChanging(); this._HeadTeacher = value; NotifyPropertyChanged(); } } } } }
创建了表类,我们还没能直接使用,在WP8中是通过DataContext类的子类来作为一个代理类操作数据库的
public class DBContext : DataContext { public const string CONNET_STR = "Data Source='isostore:/db.sdf';Password='111111'"; public DBContext() : base(CONNET_STR) { } public Table<ClassTable> ClassTable; }
类型为Table<T> 的公开字段就是表对象,字段名和类型名一样(不一样需要另外配置,暂不说)
数据库的链接字符串格式是:
Data Source='isostore:/<文件名>';Password='<密码>'
在App.xaml.cs文件的构造函数中使用如下代码创建数据库
using (DB.DBContext db = new DB.DBContext()) { //不存在数据库的时候才创建新数据库,注意,如果修改了数据库的话,需要删除重新创建数据库 if (db.DatabaseExists() == false) { db.CreateDatabase(); } }
下班了,今天就写创建数据库好了,接下来还有操作数据库,要注意的事项和高级应用(比如表间关系的设置),最终会完成一个辅助管理班级的app。
相关文章推荐
- 按月、周、日查询统计数据量的sql语句
- SQL SERVER创建数据库邮件
- Oracle Spatial中SDO_Geometry详细说明
- SQL/LINQ/Lamda
- Sql 字符串替换
- mysql
- mysql联合索引详解
- sql server中新增一条数据后返回该数据的ID
- 数据库设计之用户-角色-权限分配
- SQL联合索引 与 单一列的索引
- ArcSDE数据库连接方法
- PowerDesigner使用教程:导出SQLServer数据库表结构到Word
- mysql数据库重命名语句
- Oracle R Enterprise安装手册
- Oracle里的哈希连接原理
- mysql建表常用sql语句分享
- Window(64Bit) 安装 PL/SQL Developer图解
- php读取mysql简单示例代码
- 建立SQL Server警告和给操作员发送email通知
- 存储过程中:exec @sql 必须要写成 exec (@sql) 不要忘记括号