------- WindowsPhone 7手机开发、.Net培训、期待与您交流! -------
一、自己编写SqlHelper的知识:
class SqlHelper
{
private static sting ConnStr=......
public static int ExecuteNonQuery(string sql,params SqlParameters[] parameters){}//创建连接对象,打开连接,创建命令对象,指定要执行的SQL,直接执行DB操作(cmd.ExecuteNonQuery())
public static object ExecuteScalar(string sql,params SqlParameters[] parameters){}
public static DataTable ExecuteDataTable(string sql,params SqlParameters[] parameters){}//DataSet只用来执行查询结果小的情况
//params长度可变,必须位于参数的最后
public static object FromDbValue(object value){}
public static object ToDbValue(object value){}
}
二、三层架构知识:(本次只涉及DAL和UI)
UI中不出现SQL
DAL常用封装:ToModel,ListAll,GetById,DeletedById,Update,AddNew,GetPageData
例子:
class StudentDAL
{
public static int GetCount(){}
public static void DelteById(long id){}//对于null和DBNULL处理
public static void Insert(Studeng stu)//insert许多列时,要把参数封装到Model中
public static Student GetById(long id){}//DAL不要返回DataTable,DataRow等ado.net的类(另:DataTable和Student的相互转换封装为一个方法会更好的)
}
class Student
{
Id, Name,
public int? Age{get;set;}//对可空数据的处理
AiHao,Height,Birthday,InDate
}
三、(例子1)复习创建客户和三层的知识(自己尝试编写一个代码生成器)
T_Customer:Id Name BirthDay(null) Address TelNum CustLevel
public class Customer
{
Id Name BirthDay Address TelNum CustLevel//null的处理
}
public class CustomerDAL
{
private Customer ToCustomer(DataRow row){}
public Customer GetById(long id){}
public void DeleteById(long id){}
public void Insert(Customer cust){}
public void Update(Customer cust){}
public Customer[] GetAll(){}
}
功能:客户的新增修改删除(遵循一些严格的要求,eg:方法、变量、接口、类名字要求)
CustomerListUI.xaml
<DataGrid name="gridCustomers" IsReadOnly="True" DockPanel.Dock="Top" AutoGenrationColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="姓名" width="100" Binding="{Binding Name}"></DataGridTextColumn>
<DataGrid.Columns>
</DataGrid>
public partial class CustomerListUI:Window
{
private void LoadData(){}
window_Load(){加载所有数据}
btnAdd_Click(){}
btnEdit_Click(){}
btnDelete_Click(){1.提醒用户2.取所选行3.删除4.重新加载数据}
}
CustomerEditUI.xaml
public partial class CustomerEditUI:Window
{
public bool IsInsert{get;set;}//新增或修改数据
public long EditingId{get;set;}//若为修改则记住id
window_Load()
{
1.判断是插入还是修改
2.若修改://窗口传值、容器中存值尽量放简单数据类型
(1)获取所选行的对象
(2)显示编辑前的窗口
3.若插入:则可以设置一些默认字段
}
btnSave_Click()
{
判断是插入还是修改
分别做不同的操作即可
(修改操作注:先从DB中查询在旧的数据然后再Update)
DialogResult=true;//表明保存这些操作
}
btnCancel_Click()
{
DialogResult=False;//表示不保存这些操作
}
}
四、(例子2)项目初始框架(HRMSys)
Model(类库生成.dll文件):
【附:public class 加public说明这个class可以被其他程序集引用,反之不可;
DAL层通过ConfigurationManager可以读到app.config中的配置信息】
HRMSys.Model(Operator.cs)
HRMSys.DAL(SqlHelper.cs; OperatorDAL.cs;)
HRMSys.UI(images, MainWindow.xaml, app.config)
MainWindow.xaml(Menu控件;操作员管理ID:miOperatorMgr)
数据库设计:
DB:HRMSYSDB
【附:sql server身份验证:根节点的“安全性”创建用户名,本数据库下节点的“安全性”下创建登录名】
T_Operator:Id UserName Password IsDeleted RealName IsLocked
未完待续。。。。。