Hxj.Data 数据库组件文档 下载本文

普通的查询都可以构造出来了,当然太复杂的报表还是手写sql或者存储过程等去实现吧。

下一节讲Insert方法的使用。

数据库组件 Hxj.Data (四)(添加操作篇)

上一节讲述如何使用查询。这节将讲添加数据操作即Insert方法的使用. 先上例子(使用asp.net) 这个是页面html代码:

_ProductName
_SupplierID
_CategoryID
_QuantityPerUnit

_UnitPrice
_UnitsInStock
_UnitsOnOrder
_ReorderLevel
_Discontinued

cs后台按钮代码:

protected void Button1_Click(object sender, EventArgs e) {

//新建一个实体

Products p = new Products();

17

//开启修改 (开启修改后的添加操作将只insert赋值过的字段) //p.Attach();

//获取页面中输入的值

EntityUtils.UpdateModel(p, \);

//返回值 如果有自增长字段,则返回自增长字段的值

int returnValue = DbSession.Default.Insert(p);

//将插入的数据查询出来

gridView.DataSource = DbSession.Default.From().Where(Products._.ProductID == returnValue).ToList(); gridView.DataBind(); }

这样就完成了一个添加操作,代码不多。

其中EntityUtils.UpdateModel(p, \);

这个需要讲解一下,这个asp.net辅助类,读取页面中的值对应实体的值,页面控件命名格式就是前缀txt_加上属性名。

Insert有四个不同签名方法,也很简单大家自己看看就明白了。 数据库的添加操作是不是很简单的了啊。 下一节将讲述Update方法的使用。

数据库组件 Hxj.Data (五)(更新操作篇)

上节讲完添加操作,这节将讲述更新操作,Update的使用。

先来例子:

//获取Products表第一行

Products p = DbSession.Default.From().ToFirst();

//开启修改 (修改操作之前 必须执行此方法) p.Attach();

p.ProductName = \;

//获取修改记录

//List list= p.GetModifyFields();

//清除修改记录 (清除后更新操作无效) //p.ClearModifyFields();

18

//更新

//返回0表示更新失败 组件有事务会自动回滚 //返回1表示更新成功

//更新成功返回值就是受影响的条数

int returnvalue = DbSession.Default.Update(p);

这样就完成了更新操作,将ProductName修改为 ”apple”.

与此等效语句也可写为:

DbSession.Default.Update(Products._.ProductName, \, Products._.ProductID == 1);

一般只修改单个值的时候推荐这种做法。

还有一种值得推荐的做法是:

Dictionary dic = new Dictionary(); dic.Add(Products._.ProductName, \dic.Add(Products._.ReorderLevel, 20);

int returnvalue = DbSession.Default.Update(dic, Products._.ProductID == 1);

把需要修改的字段和值放到字典中,然后根据条件去更新。

修改操作是不是也很简单了啊。

下一节将讲述Delete方法的使用。

数据库组件 Hxj.Data (六)(删除操作篇)

上节讲述数据库更新操作,本节将讲述删除操作。 上代码:

//删除 条件 ProductID=2

int returnvalue = DbSession.Default.Delete(Products._.ProductID == 2);

Delete很简单,只要加了条件就可以了。 与之等效的还有如下操作:

int returnvalue = DbSession.Default.Delete(2);

这里的参数“2”等效于“Products._.ProductID == 2”,Products表的主键是ProductID,会自动去匹配。

这种情况对应条件是主键的时候可以使用。

19

还有一种方法:

Products p = DbSession.Default.From().ToFirst(); int returnvalue = DbSession.Default.Delete(p);

就是传入一个实体,该方法会自动去查看主键条件,所以没有主键的实体切勿使用该方法,不然全表的数据都会删除。 删除也很简单,所以内容也少。 下一篇将讲述直接sql语句的执行。

数据库组件 Hxj.Data(七) (sql篇)

上一节讲述的是删除操作,本节将讲述如何直接执行sql语句。 直接执行sql语句是使用FromSql方法。

DbSession.Default.FromSql(\).ToDataTable();

这样看起来亲切多了吧,直接sql就可以执行。 当然也可添加参数的啊。

DbSession.Default.FromSql(\

productid=pid\).AddInParameter(\, DbType.Int32, 1).ToDataTable();

这样的查询条件是productid=1返回一条记录。

这里sql语句中pid要确保唯一,不然都会被替换成参数的。

比如:select * from products where productid=productid 这样在sqlserver下就会被替换成select * from products where @productid=@productid 这里只是做了简单的替换,所以确保申明的参数唯一性。 当多个参数时可如下写法:

DbParameter[] parameters = new DbParameter[2];

parameters[0] = DbSession.Default.Db.DbProviderFactory.CreateParameter(); parameters[0].DbType = DbType.Int32; parameters[0].ParameterName = \; parameters[0].Value = 1;

parameters[1] = DbSession.Default.Db.DbProviderFactory.CreateParameter(); parameters[1].DbType = DbType.Int32; parameters[1].ParameterName = \; parameters[1].Value = 2;

DbSession.Default.FromSql(\* from products where productid=pid or categoryid=cid\)

20