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以上的版本就不行了,需要使用微软公司 ...
随机推荐
- jstree 节点拖拽保存数据库
需要jstree具有拖拽功能需要在加载jstree时添加dnd插件,具体看代码: $('**').jstree({ //plugins-各种jstree的插件引入,展示树的多样性 'plugins' ...
- Android利用Filter过滤数据
MainActivity如下: package cc.testfilterable; import java.util.ArrayList; import java.util.HashMap; imp ...
- android 46 service
service是安卓四大组建之一,service只能系统创建不能new,service也要在项目清单中注册说明,service分为2中,一种是系统级的服务,一种是我们自己写的服务. 启动和关闭serv ...
- navigation的pushViewController卡顿问题
问题:在ios中一个viewController中,添加下面代码: <pre name="code" class="objc">UIViewCont ...
- GNU GRUB version 0.97 (630K lower /2053824K upper memory)
昨天把老板的IBM X61笔记本拿过来多系统,结果本以为很容易,直接ghost,结果悲剧发生啦,开机之后提示GNU GRUB version 0.97 (630K lower /2053824K up ...
- Java——(四)Collection之Set集合TreeSet类
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- TreeSet类 TreeSet是SortedSet接口的实现类,正如SortedSet名字所暗 ...
- python - 操作RabbitMQ
python - 操作RabbitMQ 介绍 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.MQ全称为Mess ...
- codevs 1817 灾后重建
/* 暴力暴力 离线每次添边 堆优化dij 70 SPFA 80..... */ #include<iostream> #include<cstdio> #include< ...
- SQL server 如何附加、还原、分离、备份数据库文件
No1 : 附加 No2 : 还原 一.(需要 .bak文件)首先建立一个数据库,数据库名称与你的.bak文件名要相同. 当然.这时候的这个数据库还是空的,需要还原回去数据.右键 ...
- strut2.xml中result param详细设置
1.Struts2.xml配置文件: 2.Jsp中:说明回调函数一个参数即可.把上面的俩个参数msg和page封装到一起了 3.msg是Action中全局变量 可参考:http://qiaolevip ...