网站建设的进度安排和人员安排,国家企业信息公示系统全国,查看一个网站的源代码做评价,有哪些公司的网站设计的好DAO (Data Access Objects)数据访问对象是第一个面向对象的接口#xff0c;它显露了 Microsoft Jet数据库引擎(由 Microsoft Access 所使用)#xff0c;并允许 Visual Basic 开发者通过 ODBC 象直接连接到其他数据库一样#xff0c;直接连接到 Access 表。DAO 最适用于单系统…DAO (Data Access Objects)数据访问对象是第一个面向对象的接口它显露了 Microsoft Jet数据库引擎(由 Microsoft Access 所使用)并允许 Visual Basic 开发者通过 ODBC 象直接连接到其他数据库一样直接连接到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用。1.访问接口DAO(Data Access Object)是一个数据访问接口数据访问顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。在核心J2EE模式中是这样介绍DAO模式的为了建立一个健壮的J2EE应用应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说就是建立一个接口接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中当需要和数据源进行交互的时候则使用这个接口并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。2.访问对象DAO(数据访问对象)是一种应用程序编程接口(API)存在于微软的Visual Basic中它允许程序员请求对微软的Access数据库的访问。DAO是微软的第一个面向对象的数据库接口。DAO对象封闭了Access的Jet函数。通过Jet函数它还可以访问其他的结构化查询语言(SQL)数据库。J2EE开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO模式能够更加专注于编写数据访问代码.3.数据访问对象DAO的功能1. DAO用来封装Data Source就比如,Connection conn DAOFactory.createConnection()..就可以把Driver. URL. username,passpword这一些放在DAO中以后要更改数据库的类型.比如要把MSSQL换成Oracle的话..只需要更改DAOFactory里面的getConnection()里面的Driver.URL.之类的..2. DAO封装对数据库的操作(比如最基本的CRUD操作)比如说你要你要插入一个新的用户..那么.在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了..具体的操作是在DAO中实现的...那么对于要调用DAO的时候.我们只要知道insertUser(User)是用来插入一个新的用户...而不需要知道是如何实现的..一般 DAO是与Abstract Factory模式一起来用的...Factory来建立数据库和定位具体的DAO(比如说是UserDao..CustomerDao..)..一般将getConnection设置为static..也可以把HibernateSessionFactory这一个公共类放在这一AbstractFactory类中去...public class DAOFactory {private static final SessionFactory sessionFactory;// 定义一个ThreadLocal .static Session currentSession().....public UserDao getUserDAO() { return new UserDaoImpl(sesssion);}pulbic OtherDao getOtherDAO() { return new OtherDaoImpl(session);}......}public interface UserDao {public insertUser(FormBean)public updateUser(FormBean);}然后就实现DAO的接口 (Struts的FormBean...VO来的..)public class UserDaoImpl implements UserDao {privateSession session;public UserDaoImpl(Session session){this.session session;}...public insertUser(FormBean) {..//..session.save(UserPO);..//..return FormBean;}public FormBean updateUser(FormBean) {..//..session.update(UserPO);..//..return FormBean;}}最后定义你的PO:public class UserPO {String firstname,lastname,password..........}4. 应用DAO编程4.1 打开数据库CDaoWorkspace对象代表一个DAO Workspace对象在MFC DAO体系结构中处于最高处定义了一个用户的同数据库的会话并包含打开的数据库负责完成数据库的事务处理。我们可以使用隐含的workspace对象。CDaoDatabase对象代表了一个到数据库的连接在MFC中是通过CDaoDatabase封装的。在构造CDaoDatabase对象时有如下两种方法创建一个CDaoDatabase对象并向其传递一个指向一个已经找开的CdaoWorkspace对象的指针。创建一个CDaoDatabase对象而不明确地指定使用的workspace此时MFC将创建一个新的临时的CDaoWorkspace对象。如下代码所示CDaoDatabasedb;db.Open(“test.mdb”FALSE,FALSE,_T(“”)其中参数一包括要打开的文件的全路径名。4.2 查询记录一个DAO recordset对象代表一个数据记录的集合该集合是一个库表或者是一个查询的运行结果中的全部记录。CDaoRecorset对象有三种类型表、动态集、快照。通常情况下我们在应用程序中可以使用CDaoRecordset的导出类这一般是通过ClassWizard或AppWizard来生成的。但我们也可以直接使用CDaoRecordset类生成的对象。此时我们可以动态地绑定recordset对象的数据成员。如下代码所示COleVariant var;long id;CString str;CDaoRecordset m_Set(db);m_Set.Open(“查询的SQL语句”)while(!m_Set.IsEOF()){/*处理m_Set.GetFieldValue(“ID”var);idV_I4(var);m_Set.GetFieldValue(“Name”var);strvar.pbVal;*/m_Set.MoveNext();}m_Set.Close();4.3 添加记录添加记录用AddNew函数此时用SetFieldValue来进行赋值。如下代码所示m_pDaoRecordset-AddNew ();sprintf(strValue,%s,m_UserName );m_pDaoRecordset-SetFieldValue (UserName,strValue);sprintf(strValue,%d,m_PointId );m_pDaoRecordset-SetFieldValue (PointId,strValue);dataSrc.SetDateTime (m_UpdateTime .GetYear ),m_UpdateTime .GetMonth ),m_UpdateTime .GetDay (),m_UpdateTime .GetHour (),m_UpdateTime .GetMinute (),m_UpdateTime .GetSecond ());valValuedataSrc;m_pDaoRecordset-SetFieldValue (UpdateTime,valValue);sprintf(strValue,%f,m_pRecordset-m_OldValue );m_pDaoRecordset-SetFieldValue (OldValue,strValue);sprintf(strValue,%f,m_pRecordset-m_NewValue );m_pDaoRecordset-SetFieldValue (NewValue,strValue);m_pDaoRecordset-Update ();此时要注意日期时间型数据要用SetDataTime函数来赋值这里面要用到COleVariant类型数据具体用法可以参考有关帮助。4.4 修改记录修改记录用Edit()函数把记录定位到要修改的位置调用Edit函数修改完成后调用Update函数。如下代码所示m_Set.Edit();m_Set.SetFieldValue(“列名””字符串”)m_Set.Update();4.5 删除记录删除记录用Delete()函数使用后不需调用Update()函数。4.6 统计记录可以使用如下代码来统计记录数COleVariant varValue;CDaoRecordset m_Set(db);m_Set.Open(dbOpenDynaset”SQL语句”)varValuem_Set.GetFieldValue(0);m_lMaxCountV_I4(varValue);m_Set.Close();如果是统计一张表中总记录可以使用CDaoTableDef对象如下代码所示CDaoTableDefm_Set(gUseDB);Countm_Set.GetRecordCount();m_Set.Close();不能用CDaoRecordset对象的GetRecordCount()来取得记录数。总结使用DAO技术可以便我们方便的访问Microsoft Jet引擎数据库由于Microsoft Jet不支持多线程因此必须限制调用到应用程序主线程的所有DAO。(来源CNET Networks )