Windows Phone 8 SQL Server CE 数据库
员工信息表 EmployeeTable.cs
using System.Data.Linq.Mapping;
using System.ComponentModel; namespace SQLServerDemo
{
[Table]
public class EmployeeTable : INotifyPropertyChanged, INotifyPropertyChanging
{
// 定义员工表独立增长ID,设置为主键
private int _employeeId; [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]
public string EmployeeName
{
get
{
return _employeeName;
}
set
{
if (_employeeName != value)
{
NotifyPropertyChanging("EmployeeName");
_employeeName = value;
NotifyPropertyChanged("EmployeeName");
}
}
} //定义员工简介字段
private string _employeeDesc; [Column]
public string EmployeeDesc
{
get
{
return _employeeDesc;
}
set
{
if (_employeeDesc != value)
{
NotifyPropertyChanging("EmployeeDesc");
_employeeDesc = value;
NotifyPropertyChanged("EmployeeDesc");
}
}
} #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; //用来通知页面表的字段数据产生了改变
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
} #endregion #region INotifyPropertyChanging Members public event PropertyChangingEventHandler PropertyChanging; // 用来通知数据上下文表的字段数据将要产生改变
private void NotifyPropertyChanging(string propertyName)
{
if (PropertyChanging != null)
{
PropertyChanging(this, new PropertyChangingEventArgs(propertyName));
}
} #endregion }
}
员工数据库EmployeeDataContext继承DataContext
using System.Data.Linq; namespace SQLServerDemo
{
//定义一个EmployeeDataContext类来继承DataContext,在EmployeeDataContext中定义数据库连接字符串,以及员工信息表
public class EmployeeDataContext : DataContext
{
// 数据库链接字符串
public static string DBConnectionString = "Data Source=isostore:/Employee.sdf"; // 传递数据库连接字符串到DataContext基类
public EmployeeDataContext(string connectionString)
: base(connectionString)
{ } // 定义一个员工信息表
public Table<EmployeeTable> Employees;
}
}
创建页面数据绑定集合
using System.ComponentModel;
using System.Collections.ObjectModel; namespace SQLServerDemo
{
//EmployeeCollection用于跟页面的数据绑定
public class EmployeeCollection : INotifyPropertyChanged
{
//定义ObservableCollection来绑定页面的数据
private ObservableCollection<EmployeeTable> _employeeTables;
public ObservableCollection<EmployeeTable> EmployeeTables
{
get
{
return _employeeTables;
}
set
{
if (_employeeTables != value)
{
_employeeTables = value;
NotifyPropertyChanged("EmployeeTables");
}
}
} #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; //用于通知属性的改变
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
}
在App.cs 的Launching添加数据库检查
// Code to execute when the application is launching (eg, from Start)
// This code will not execute when the application is reactivated
private void Application_Launching(object sender, LaunchingEventArgs e)
{
//如果数据库不存在则创建一个数据库
using (EmployeeDataContext db = new EmployeeDataContext(EmployeeDataContext.DBConnectionString))
{
if (db.DatabaseExists() == false)
{
//创建一个数据库
db.CreateDatabase();
}
}
}
MainPage.xaml.cs
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Microsoft.Phone.Controls;
using System.Collections.ObjectModel; namespace SQLServerDemo
{
public partial class MainPage : PhoneApplicationPage
{
// 创建DataContext实例用于用于操作本地的数据库
private EmployeeDataContext employeeDB;
private EmployeeCollection employeeCol = new EmployeeCollection(); public MainPage()
{
InitializeComponent(); //连接数据库并初始化DataContext实例
employeeDB = new EmployeeDataContext(EmployeeDataContext.DBConnectionString); // 使用Linq查询语句查询EmployeeTable表的所有数据
var employeesInDB = from EmployeeTable employee in employeeDB.Employees
select employee; // 将查询的结果返回到页面数据绑定的集合里面
employeeCol.EmployeeTables = new ObservableCollection<EmployeeTable>(employeesInDB); //赋值给当前页面的DataContext用于数据绑定
this.DataContext = employeeCol;
} /// <summary>
/// 删除操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void deleteButton_Click(object sender, RoutedEventArgs e)
{
// 获取单击的按钮实例
var button = sender as Button; if (button != null)
{
//获取当前按钮绑定的DataContext,即当前的删除的EmployeeTable实例
EmployeeTable employeeForDelete = button.DataContext as EmployeeTable;
//移除绑定集合里面要删除的EmployeeTable记录
employeeCol.EmployeeTables.Remove(employeeForDelete);
// 移除数据库里面要删除的EmployeeTable记录
employeeDB.Employees.DeleteOnSubmit(employeeForDelete);
//保存数据库的改变
employeeDB.SubmitChanges();
}
} /// <summary>
/// 保存操作,处理新增和编辑员工信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void addButton_Click(object sender, RoutedEventArgs e)
{
//控制员工名字和简介不能为空
if (name.Text != "" && desc.Text != "")
{
if (State.Count> && State["employee"] != null )//编辑状态
{
//获取编辑的EmployeeTable对象
EmployeeTable employee = (EmployeeTable)State["employee"];
employee.EmployeeName = name.Text;
employee.EmployeeDesc = desc.Text;
//保存数据库的改变
employeeDB.SubmitChanges();
//添加绑定集合的数据,因为在单击编辑的时候移除了
employeeCol.EmployeeTables.Add(employee);
State["employee"] = null;
}
else//新增状态
{
//创建一条表的数据
EmployeeTable newEmployee = new EmployeeTable { EmployeeName = name.Text, EmployeeDesc = desc.Text };
//添加绑定集合的数据
employeeCol.EmployeeTables.Add(newEmployee);
//插入数据库
employeeDB.Employees.InsertOnSubmit(newEmployee);
//保存数据库的改变
employeeDB.SubmitChanges();
} name.Text = "";
desc.Text = "";
}
else
{
MessageBox.Show("姓名和简介不能为空!");
}
} /// <summary>
/// 编辑操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void editButton_Click(object sender, RoutedEventArgs e)
{
// 获取单击的按钮实例
var button = sender as Button; if (button != null)
{
//获取当前按钮绑定的DataContext,即当前的编辑的EmployeeTable实例
EmployeeTable employeeForEdit = button.DataContext as EmployeeTable;
name.Text = employeeForEdit.EmployeeName;
desc.Text = employeeForEdit.EmployeeDesc;
//将需要编辑的表实例存储在State里面
State["employee"] = employeeForEdit;
employeeCol.EmployeeTables.Remove(employeeForEdit);
}
}
}
}
Windows Phone 8 SQL Server CE 数据库的更多相关文章
- WP之Sql Server CE数据库
如何在WP8中进行数据存储,你首先想到应该是独立存储,但是独立存储似乎存储文件更方便,如果我们希望像处理对象的形式,该怎么办呢,答案就是Sql Server CE. Sql Server CE并不是新 ...
- 如何转换SQL Server 2008数据库到SQL Server 2005
背景介绍: 公司一套系统使用的是SQL SERVER 2008数据库,突然一天收到邮件,需要将这套系统部署到各个不同地方(海外)的工厂,需要在各个工厂部署该数据库,等我将准备工作做好,整理文档 ...
- SQL Server附加数据库出现错误5123的正确解决方法
因为自己有一本基于SQL Server 2005的数据库教程,里边使用的示例数据库是AdventureWorks for SQL Server 2005,而我的机子上装的是SQL Server 200 ...
- 通过SQL Server 2008数据库复制实现数据库同步备份
SQL Server 2008数据库复制是通过发布/订阅的机制进行多台服务器之间的数据同步,我们把它用于数据库的同步备份.这里的同步备份指的是备份服务器与主服务器进行 实时数据同步,正常情况下只使用主 ...
- SQL Server 2012 数据库笔记
慕课网 首页 实战 路径 猿问 手记 Python 手记 \ SQL Server 2012 数据库笔记 SQL Server 2012 数据库笔记 2016-10-25 16:29:33 1 ...
- SQL Server 2008 数据库镜像部署实例之一 数据库准备
SQL Server 2008 数据库镜像部署实例之一 数据库准备 一.目标 利用Sql Server 2008 enterprise X64,建立异步(高性能)镜像数据库,同时建立见证服务器实现自动 ...
- SQL Server中数据库文件的存放方式,文件和文件组
原文地址:http://www.cnblogs.com/CareySon/archive/2011/12/26/2301597.html SQL Server中数据库文件的存放方式,文件和文件组 ...
- Windows XP系统安装SQL Server 2005(开发版)图解
转自Windows XP系统安装SQL Server 2005(开发版)图解 安装前提:由于有些从网上的下载的项目需要导入SQL Server 2005的数据文件,因此,今天便安装了这个数据库,我的系 ...
- php连接sql server 2008数据库
原文:php连接sql server 2008数据库 关于php连接sql server 2008的问题,2000的版本可以直接通过php中的配置文件修改,2005以上的版本就不行了,需要使用微软公司 ...
随机推荐
- 【java/C# 服务器】IOS 配置推送证书 p12文件流程 - 勿以己悲
在配置 P12 证书文件之前, 我们要准备三个文件 1.PushChat.certSigningRequest 请求证书文件 2.PushChatKey.p12 ...
- 吴柄锡 github----MHA helper
https://github.com/wubx http://www.cnblogs.com/kissdb/p/4009620.html
- Java语言基础(八)
Java语言基础(八) 一.数学运算 + - * / % (1)凡是byte short char类型都按int类型的计算 看看上面的代码,为什么出错! 我已经将100转成byte类型,( ...
- 亲测linux6.4 安装
1.bios下点击 u盘 启动进入(两个Flash1.0,都试试) 2.最关键的部分是,不如windows启动 没有linux界面. others(只是把这个修改一下名字为windows7) cent ...
- isAssignableFrom与instanceof的区别
1.isAssignableFrom针对的是class对象: 2.instanceof是实例. isAssignableFrom是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的 ...
- java 引用资源-ClassLoader.getResource()方法
如图,eclipse中我的包结构为:,我在 spt.app.MainFrame 中可以通过一下代码段使用资源: public static Object obj = ImageIconProxy.cl ...
- Nhibernate主子表查询
假如有AB两表,A为主,B为子:已知A表ID,查B表数据 ICriteria criteriaTotal = session.CreateCriteria<B>().CreateCrite ...
- 用java写bp神经网络(四)
接上篇. 在(一)和(二)中,程序的体系是Net,Propagation,Trainer,Learner,DataProvider.这篇重构这个体系. Net 首先是Net,在上篇重新定义了激活函数和 ...
- spring-quartz普通任务与可传参任务
两者区别与作用: 普通任务:总调度(SchedulerFactoryBean)--> 定时调度器(CronTriggerFactoryBean) --> 调度明细自定义执行方法bean(M ...
- HTML meta标签总结与属性使用介绍
之前学习前端中,对meta标签的了解仅仅只是这一句. <meta charset="UTF-8"> 但是打开任意的网站,其head标签内都有一列的meta标签.比如我博 ...