WindowsPhone7开发中使用SQLCE数据库实例

存储在独立存储文件中,这个
【菜科解读】
在WindowsPhone中有时候我们会一些数据的存储,这个时候我们有两种选择,一种是选择存在的独立存储文件中,一种是存储在数据库中。
存储在独立存储文件中,这个相信很多用都会使用,这里不作为重点,本文主要讲一下在WindowsPhone中使用数据库SQLCE。
下面开始一步一步的带领大家实现在WindowsPhone中使用SQLCE数据库。
(该示例引自WindowsPhone7应用开发)
一、首先,我们需要创建一个EmployeeTable类,映射为数据库中的Employee表
如下:
在创建之前需要添加引用:System.Data.Linq;
同时引入命名空间:usingSystem.Data.Linq.Mapping;
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778[Table]//特性标识该类为映射为数库中的表 //该类实现了INotifyPropertyChanged和INotifyPropertyChanging接口 public class EmployeeTable:INotifyPropertyChanged,INotifyPropertyChanging { private int _employeeId; //将EmployeeID映射为表的主键,特性Column里的含义分别为:主键,自增,int型不为空,不为空等 [Column(IsPrimaryKey = true, IsDbGenerated = true,DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)] public int EmployeeID { get{ return _employeeId; } set{ if (_employeeId != value) { NotifyPropertyChanging("EmployeeID"); _employeeId = value; NotifyPropertyChanged("EmployeeID"); } } } private string _employeeName; [Column]//EmployeeName属性为表中EmployeeName字段 public string EmployeeName { get{ return _employeeName; } set{ if (_employeeName != value) { NotifyPropertyChanging("EmployeeName"); _employeeName = value; NotifyPropertyChanged("EmployeeName"); } } } private string _employeeDesc; [Column]//将EmployeeDesc属性映射为表中EmployeeDesc字段 public string EmployeeDesc { get{ return _employeeDesc; } set{ if (_employeeDesc != value) { NotifyPropertyChanging("EmployeeDesc"); _employeeDesc = value; NotifyPropertyChanged("EmployeeDesc"); } } } //定义PropertyChanged事件用来通知页面,表字段数据发生了改变 public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } //定义PropertyChanging事件通知数据上下文表的字段数据将要发生改变 public event PropertyChangingEventHandler PropertyChanging; private void NotifyPropertyChanging(string propertyname) { if (PropertyChanging != null) { PropertyChanging(this, new PropertyChangingEventArgs(propertyname)); } } }通过以上的这些操作,我们已经基本上完成了Employee表的创建,映射为数据库中的EmployeeTable表
二、下面我们来新建一个EmployeeDataContext.cs类文件,创建数据库的DataContent,该类继承自DataContent,在该类中定义连接字符串,如下:
首先需要引入命名空间:usingsystem.data.Linq;
public class EmployeeDataContext:DataContext { //数据库连接字符串 public static string DBConnectionString = "Data Source=isostore:/Employee.sdf"; //传递数据库连接字符串到DataContext基类 public EmployeeDataContext(string connectionString):base(connectionString) { } //定义员工信息表 public Table Employees; }三、创建EmployeeCollection类,该类的主要作用为页面数据绑定的集合。
如下:
//绑定页面,进行显示用
public class EmployeeCollection:INotifyPropertyChanged { //用于通知属性的改变 public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this,new PropertyChangedEventArgs (propertyName)); } } private ObservableCollection _employeeTables;//创建EmployeeTables属性用来绑定页面数据
public ObservableCollection EmployeeTables { get{ return _employeeTables; } set{ if (_employeeTables != value) { _employeeTables = value; NotifyPropertyChanged("EmployeeTables"); } } } }四、这样一个完整的数据库就创建完毕了,那么我们该如何使用呢?一般的情况下我们都是在程序启动的时候加载数据库,为此我们可以在App.xaml文件的Launching事件中做如下处理:
using (EmployeeDataContext db=new EmployeeDataContext(EmployeeDataContext.DBConnectionString)) { if (db.DatabaseExists() == false) { db.CreateDatabase(); } }五、下面做一个实例进行演示:
页面布局如下:
.cs页的处理代码如下:
public partial class EmployeeShow : PhoneApplicationPage { //创建DataContext用于操作独立的数据库 private EmployeeDataContext employeeDB; private EmployeeCollection employeeCol = new EmployeeCollection();public EmployeeShow() { InitializeComponent(); //创建EmployeeDataContext实例 employeeDB = new EmployeeDataContext(EmployeeDataContext.DBConnectionString); var employeeInDB = from EmployeeTable employee in employeeDB.Employees select employee; //为页面创建数据绑定源 employeeCol.EmployeeTables = new System.Collections.ObjectModel.ObservableCollection(employeeInDB); listBox1.ItemsSource = employeeCol.EmployeeTables; }
//删除信息
private void deleteButton_Click(object sender, RoutedEventArgs e) { var button = sender as Button; if (button != null) { EmployeeTable edelete = button.DataContext as EmployeeTable; // employeeCol.EmployeeTables.Remove(edelete); employeeDB.Employees.DeleteOnSubmit(edelete); employeeDB.SubmitChanges(); } }//保存信息
private void button2_Click(object sender, RoutedEventArgs e) { if (txtname.Text != "" && txtdesc.Text != "") { //编辑状态 if (State.Count > 0 && State["employee"] != null) { EmployeeTable employee = (EmployeeTable)State["employee"]; employee.EmployeeName = txtname.Text; employee.EmployeeDesc = txtdesc.Text; employeeDB.SubmitChanges(); employeeCol.EmployeeTables.Add(employee); State["employee"] = null; } Else//添加新的信息 { EmployeeTable newEmployee = new EmployeeTable { EmployeeName = txtname.Text, EmployeeDesc = txtdesc.Text }; employeeCol.EmployeeTables.Add(newEmployee); employeeDB.Employees.InsertOnSubmit(newEmployee); employeeDB.SubmitChanges(); txtname.Text = ""; txtdesc.Text = ""; } listBox1.ItemsSource = employeeCol.EmployeeTables; } else{ MessageBox.Show("姓名和简介不能为空!"); } }//编辑信息
private void editButton_Click(object sender, RoutedEventArgs e) { var button = sender as Button; if (button != null) { EmployeeTable eedit = button.DataContext as EmployeeTable; txtname.Text = eedit.EmployeeName; txtdesc.Text = eedit.EmployeeDesc; State["employee"] = eedit; employeeCol.EmployeeTables.Remove(eedit); } } }效果如图:
好了,到这里我们已经基本上实现了在WindowsPhone手机中使用SQLCE数据库了,希望可以对朋友们有所帮助。
WindowsPhone7,开发,中,使用,SQLCE,数据库尔德人是一个什么样的群体 他们又在中东乱局中扮演着什么角色
那么他们到底是一个什么样的群体?这个群体又有着怎样的诉求?他们又在中东乱局中扮演着什么角色呢? “库尔德人”,一个以“勇士”为代称的民族,是西亚最古老的民族之一,是中东地区仅次于阿拉伯、和波斯民族的第四大民族。
公元前6世纪中期,米底被居鲁士大帝征服,米底人与波斯人的融合形成了今日的库尔德人,如今总人口约3000万。
库尔德人聚居地被称为库尔德斯坦,这一地区原先大部分为奥斯曼帝国所统治。
库尔德人信仰伊斯兰教,多属逊尼派,讲库尔德语。
库尔德文的书写在伊拉克和伊朗用阿拉伯文字母,在土耳其和叙利亚用拉丁字母。
然而,他们又是世界上唯一一个人口众多,却始终没有获得过自决权的民族。
其以复杂性、尖锐性和国际性特点长期以来一直是中东地区仅次于阿拉伯国家与以色列之间冲突的第二大热点问题。
库尔德斯坦最初作为一个行政区划的概念。
1157年,塞尔柱苏丹桑贾尔设立库尔德省,行省区域包括哈马丹、克尔曼、辛贾尔等地区,远远大于今天库尔德斯坦的面积。
直到19世纪中叶奥斯曼帝国才设置了库尔德斯坦省,但存在时间很短。
库尔德斯坦当时处于奥斯曼帝国和波斯帝国之间,两大帝国更多地把库尔德斯坦地区作为他们的缓冲地带。
库尔德人处在两大帝国的夹缝中,享有一定的自治。
一战后,协约国与奥斯曼帝国签订《色佛尔条约》,承认库尔德人自治和独立的权利。
然而,随着凯末尔革命的胜利,《色佛尔条约》被《洛桑条约》所取代,库尔德为拥有丰富的石油资源而被割到四个中东国家。
其中,土耳其库尔德斯坦称北库尔德斯坦,伊拉克库尔德斯坦地区称为南库尔德斯坦,伊朗库尔德斯坦地区称东库尔德斯坦,叙利亚库尔德斯坦地区称为西库尔德斯坦。
库尔德人作为美国在中东的一枚棋子,时而受到美国的扶持,时而受到美国的压制。
在政治制度建设上,库尔德地区的两大政党分别是巴尔扎尼家族领导的库尔德民主党(KDP)和塔拉巴尼家族领导的库尔德斯坦爱国联盟(PUK),他们各自拥有“自由斗士”部队,对该地区的政治制度建设存在分歧,这导致两派间矛盾冲突不断,一度双方还邀请伊朗和伊拉克中央政府的军队入境来清缴对方,无疑内部的对抗和排他主义者的利益将会阻碍独立。
库尔德人谋求自治和独立,美国的支持必不可少,但过于依赖美国显然是不明智的。
就目前而言,伊拉克库尔德人实际上已建立“国中之国”,他们拥有自己的财政来源、政治组织和武装力量,俨然成为一个“准国家”。
叙利亚危机导致多国库尔德力量的联合,叙利亚库尔德人也积极谋求民族权利和自治地位,甚至要建立所谓的“自治国家”。
库尔德人建国梦极易导致中东地缘政治新一轮的洗牌,这是西方国家和库尔德人所在国不能容忍的。
鉴于历史和现实的原因,库尔德斯坦国只是梦。
随机文章声名狼藉的女力先锋——大法官露丝.拜德.金斯伯格金斯伯格面对袁绍的十万大军曹操如何用不到两万的兵力赢得官渡之战?清朝的皇后权力多大?这件事让人傻眼:竟然是她决定俄罗斯不明飞行物干扰导弹中心,300米飞行物险酿核战争助力恋爱的黑暗效应,让你免除第一次见面的尴尬(加快推到进度)
在清末对外战争中,淮军和湘军的战斗力差距为什么会那么大?
可到了对外作战中,两者之间的差距立马就凸显出来了。
清末对外作战中,取得了两次重大的军事胜利:一是率领以刘锦堂部两万老湘军为主力收复新疆,为祖国收复了160万平方公里的土地;二是湘军王德榜率领的老湘军二十一营在镇南关配合冯子材取得的大捷,打败了法国侵略者。
可这两次对外作战,皆不见淮军的影子,如果真要说有的话,那就是1875年淮军刘铭传部带着几万人在陕西大吃大喝,就是不肯入甘肃和新疆作战,以及1884年淮军部在面对法国兵时惊慌失措,仓皇而逃。
那么问题来了,同样是内战中的“劲旅”,可为何到了对外作战时,差距会如此之大呢?下面我们就简单来分析下。
一来是在将才的选用上 在这方面,湘军(至少是高级将领)在道德和能力上有着更为严格的要求。
湘军初创时,就曾提出四条:“带兵之人,第一要才堪治民;第二要不怕死;第三要不急急名利;第四要耐受辛苦,大抵有忠义血性,则四者相从以俱至;无忠义血性,则貌似四者。
终不可恃。
” 道义和忠义,始终都是湘军选拔将领时永不放弃的两个要求,他们的将领主要靠儒家传统道德来教育和约束自己。
湘军的主要将领几乎全部都是儒生,比如罗泽南、王鑫等是理学家,是个学者,则是进士出身。
这些人有种理想主义,有为理想的决心,这样的将领才能适应战争的特殊需求。
我们再来看淮军将领,完全就不是那么回事儿了。
淮军将领中读书人不多,主要将领中,也就只有潘鼎新是个举人,另外如程学是太平军的降将,刘铭传是盐贩子出身,张树声、张树珊以及周盛波、周盛传兄弟则基本上都是地痞一类的人物,靠办团练起家的。
吴出身行伍,曾做过中下级军官。
他们这些人出身比较低微,没有什么道德和理想,重利不重德。
所以在国内战场上尚能依靠火力掩饰一下,可一旦面对强悍的外敌时,没有忠义血性的本性就暴露出来了。
1884年时,张树声、潘鼎新怕死不肯作战被革去督、抚职务;中日甲午战争中,叶志超千里大溃逃等等。
这些人毫无道德和忠义血性可言。
二来是在士兵的选用上 湘军选兵必须是亲自招募,绝不假手他人,而且选择标准极为严格,要求技艺娴熟,,朴实而有农夫土气者为上,油头滑面,有市井气者,有衙门气者,一概不收。
曾国藩曾一再强调“但求其精,不求其多,但求有济,不求速效,练一收一人之益,练一月收一月之效”。
在这样的严格选拔、训练、管理之下,湘军的士兵素质普遍都比较高。
而且他们来自一个地方,互相比较了解,也比较团结。
而淮军基本上就是个大杂烩了。
在士兵招募方面兼收并蓄,士兵的来源参差不齐,张树声、刘铭传、周盛波、潘鼎新、吴长庆这些人中,有的是来自流氓集团,有的是来自团练,而战斗力好的程学启部就是由的降军所组成的。
李鸿章受西方的影响比较深,武器装备基本都是以洋枪为主,打内战时,这点要比湘军好不少,可一旦要和敌人肉搏时,淮军战斗力意志薄弱的缺点就显露无疑了。
三来是在战斗意志的形成上 湘军重视的是道德和个人操守,追求的是儒家保家卫国的境界,砥砺品格,信奉实干。
而淮军多是廉耻之心而唯利是图的小人,李鸿章明知这些人的真实面目,却还仍旧委以重任,其直接后果就是吏风日下,士兵素质、斗志和士气都远不如同时期的湘军。
写《太平天国亲历记》的英国人林利对淮军直接就是,可在西线见到湘军时却高叫“他们的勇敢是清军中前所未见的”。
湘军拥有勇猛的战斗风格和坚强的战斗意志,在对外作战中,这种精神力量要远比几件西洋火器好使得多,“吃得苦,霸得蛮,舍得死”的湘军精神,在对外作战中表现得是淋漓尽致。
淮军也颇有些悍将,这些人当年在镇压太平天国和捻军时都是一把好手,可他们面对的是乌合之众,一旦遇到同样也拥有西洋火器的正规军时,他们就一败涂地了。
在甲午战争中,唯一敢跟日军肉搏的就是湘军,牛庄战役惨烈战败,也是湘军最后一缕夕阳。
所以说,一支军队,就算你武器装备再牛气、再先进,可没有敢于亮剑精神的话,始终不能作为国家的依靠。
随机文章齐齐哈尔干尸复活之谜,被埋复活极力挣扎身连胎盘盘点b站十大洗脑神曲,让您欲罢不能走火入魔(内附试听)详解弹道导弹和巡航导弹区别,前者速度15倍音速无法拦截太阳系是否稳定,太阳系为什么很稳定(太阳系并没有那么稳定)希腊火神赫菲斯托斯,出生就注定了他悲凉的一生(可怜人)