2011年11月8日
摘要: 前几天在CSDN上看到有人使用sqlite+tomcat实现一个web应用,并发操作引起数据库锁定,在发帖求助。这才想起自己以前做的一个web应用也有相同问题,顺便把自己解决方法写下来,供大家参考。当时我的应用是给单位做一个月度工作计划的上报并生成WORD文件供排版、打印。考虑到数据量不大,没有现成数据库系统可用,并且当时自己已经为sqlite写了一个很好的辅助系统(当时叫SqliteHelper,就是现在xqk.data数据框架的原始版本,呵呵),就决定用sqlite数据库+asp.net来实现。应用实现起来很简单,但是在上线试运行时,发现经常出项sqlite被锁定,不能读写的错误。也就是C 阅读全文
posted @ 2011-11-08 07:07 zjxing 阅读(3099) 评论(7) 推荐(0) 编辑
  2011年11月7日
摘要: 上一篇《丰富的、灵活的查询方法(第二部分:适应不同数据库系统的查询)》中提到,为适应不同的数据库系统,Xqk.Data数据开发框架提供了SqlExpression来作为数据库查询的中间语言。现在介绍SqlField类,它能让使用SqlExpression看起来变得更加直观。SqlField只有一个string类型的Name属性,表示数据列名称。SqlField为每个Sql表达式操作符提供了对应的方法,来生成基于该数据列的表达式。要使用SqlField,需要对实体类进行改造,为需要进行查询的数据列对应的属性添加一个SqlField类型的静态属性。以示例一中的Person实体类为例,改造后的代码如 阅读全文
posted @ 2011-11-07 07:14 zjxing 阅读(329) 评论(1) 推荐(0) 编辑
  2011年11月6日
摘要: 在上篇文章《丰富的、灵活的查询方法(第一部分)》提到,针对不同的开发任务,Xqk.Data数据框架提供了丰富的、灵活的查询方法,文章还介绍了一些查询方法,在这些方法中,大部分都有一个共同的whereStr参数,该参数用来表明查询条件,即SQL语句中紧跟WHERE关键字的部分。需要注意的是,不同的数据库系统都有一些特定的行为。因此,如果代码要想适应不同的数据库系统,请确保提供的whereStr能在不同数据库系统下都能正确执行,且能够得到相同的结果或行为,或者为不同的数据库系统提供不同的whereStr值。DbTable<TEntity>类为每个使用whereStr查询方法提供了相应的 阅读全文
posted @ 2011-11-06 07:13 zjxing 阅读(215) 评论(3) 推荐(0) 编辑
  2011年11月4日
摘要: 开发人员在开发数据库应用时经常要用到数据表查询。在Xqk.Data的第一个示例中,我们就使用了SelectAll方法来获取数据表中的所有数据。Xqk.Data数据框架针对不同查询结果、查询场景提供了丰富的、灵活的查询方法。下面介绍的方法都是DbTable<TRecord>类的方法,_DbtPerson定义如下:DbTable<Person> _DbtPerson = db.GetTable<Person>();Person的定义可查看第一个示例。public TRecord[] SelectAll();从当前数据表中查询所有数据,并返回实体对象数组。Pers 阅读全文
posted @ 2011-11-04 19:53 zjxing 阅读(234) 评论(0) 推荐(0) 编辑
  2011年11月3日
摘要: 上一篇文章《一个简单的XqkData使用示例》提到,用DbTable<T>泛型类来建立实体类与数据表的关联时,默认使用实体类名的小写形式,例如在上文提到的示例中,实体类名是Person,则默认使用person来作为数据表名。 事实上,在多种情形下,需要对关联的数据表名进行自定义。比如:数据表已存在,且数据表的名称不符合自己的编程习惯;存在2张具有相同结构的数据表。 Xqk.Data数据框架提供2种方式来使实体类关联到自定义的数据表中。 方式一:使用DbTable特性 在实体类声明时,添加带Name参数的DbTable特性。形如: [DbTable(Name="person 阅读全文
posted @ 2011-11-03 08:41 zjxing 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 在Xqk.Data的第一个示例中,我们在实体类的属性中添加DbField特性,使得该属性能够与数据表列对应起来。下面来说说DbField属性的详细用法。DbField特性的属性如下:Name(类型:string)关联的数据列名称。如果未指定,则默认用实体类属性的小写形式。Length(类型:int)关联的数据列的值的最大长度。默认值为0,表示不指定长度。length属性。IsAutoIncrement(类型:bool)关联数据列是否为自增型。IsPrimaryKey(类型:bool)关联数据列是否为主键。 本站的文档管理系统,数据表中经常有一个文档编号的字段,该字段的值为自增,且为主键,则该属 阅读全文
posted @ 2011-11-03 08:40 zjxing 阅读(832) 评论(0) 推荐(2) 编辑
  2011年11月2日
摘要: 该例子建立了一个Person的实体类,该实体类与数据表person关联,通过Person对象就可以实现对数据表person的操作。通过Visual Studio创建一个WinForm项目XqkDataDemo1;把Xqk.Data.dll复制到项目中;把数据库连接库复制到项目中(本例用SqlLite,需要把System.Data.SqlLite.dll复制到项目中);创建一个实体类Person;代码如下:using System;using System.Collections.Generic;using System.Text;using Xqk.Data;namespace XqkData 阅读全文
posted @ 2011-11-02 08:37 zjxing 阅读(224) 评论(2) 推荐(0) 编辑
摘要: 创建一个需要与数据表关联的实体类;通过为实体类的属性添加DbField特性,把该属性与数据表列(即数据表字段。由于C#类也包含字段定义,为了防止混淆,本文及将来本系列的所有文章均把数据表字段称为数据表列)绑定;一个数据表列只能绑定到一个属性;使用DbConnector类为特定数据库系统提供的静态函数来连接数据库;用DbConnector实体对象的GetTable<T>方法得到DbTable<T>对象,实现数据表与实体类的关联;使用DbTable<T>对象的Select ,Insert, Update等方法操作数据表。更多关于Xqk.Data的信息请访问主页h 阅读全文
posted @ 2011-11-02 08:37 zjxing 阅读(196) 评论(0) 推荐(0) 编辑
摘要: Xqk.Data是一个能实现数据表与实体类相互转换的数据开发框架,从而帮助您构建可靠、可维护的 N 层体系架构。Xqk.Data具有以下特性:通过实体类直接在数据库中创建数据表;Select方法直接返回实体对象或实体对象数组;Insert和Update使用实体对象做为参数;实体类在不同数据库系统下可以自由转换;当前版本暂支持SqlLite和MySQL,将来会支持MS SQL和Oracle;更多关于Xqk.Data的信息请访问主页http://www.xqkblog.com 阅读全文
posted @ 2011-11-02 08:33 zjxing 阅读(265) 评论(0) 推荐(0) 编辑