首页 嵌入式SQL数据库编程

嵌入式SQL数据库编程

举报
开通vip

嵌入式SQL数据库编程实验二 线程同步调试实验 实验五 嵌入式SQL数据库编程 [实验目的] 1、了解ADOCE组件; 2、掌握在Windows下的DLL等组件的注册; 3、掌握嵌入式数据库的开发过程; 4、掌握SQL语句的使用方法 5、熟悉EVC和VS.Net的使开发环境; [实验仪器] 1、装有Platform Builder、EVC和VS.Net开发平台的PC机一台 2、XSBase270实验开发平台一套 [实验原理] 1、ADOCE简介 ADO是Microsoft 公司为各类型数据所提供的一个策略性的高级界面。使用ADO的应用程...

嵌入式SQL数据库编程
实验二 线程同步调试实验 实验五 嵌入式SQL数据库编程 [实验目的] 1、了解ADOCE组件; 2、掌握在Windows下的DLL等组件的注册; 3、掌握嵌入式数据库的开发过程; 4、掌握SQL语句的使用 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 5、熟悉EVC和VS.Net的使开发环境; [实验仪器] 1、装有Platform Builder、EVC和VS.Net开发平台的PC机一台 2、XSBase270实验开发平台一套 [实验原理] 1、ADOCE简介 ADO是Microsoft 公司为各类型数据所提供的一个策略性的高级界面。使用ADO的应用程序可以通过 OLE 数据库提供者存取和操作数据库服务器中的数据。ADO 主要的好处是容易使用、高速、占用内存少及占用磁盘空间小。ADO 提供一致高效的数据存取,用以建立前端数据库客户端或是建立应用程序、工具甚至是 Internet 浏览器的中间层商业对象。 ADO 是 Microsoft Universal Data Access 关键组件。Universal Data Access 提供对各种信息来源的高效存取,包括关系型和非关系型的数据源以及一个容易使用的程序化界面。该界面不但独立于开发工具,也不限定使用哪一种程序语言。这些技术使得公司能够综合不同的数据源,建立容易维护的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 并选择使用最好的工具、应用程序和应用平台。 ADOCE 提供 ADO 对 Windows CE 操作系统的子集合,这个子集合包括对 Recordset对象和 Field 对象的支持。ADOCE 对 Windows CE 来说增加了新的数据库功能,可以存取保存在本机中的数据库并且提供网络数据库的数据同步。ADOCE 在任何 COM- capable 环境下都提供对 Windows CE 数据库引擎的存取。 ADOCE提供了 ADOCE.Connetion 对象,用来创建和存取数据库、数据表。ADOCE还提供了一个 Errors 对象,它用来代表各类运行中产生的错误。此外,ADOCE 提供的名为 ADOCE.Recordset 的对象,用来表示从实际数据库、数据表里提取组合而成的虚拟记录集。在 ADOCE.Recordset 对象中含有很多的方法与属性,它们主要用于管理已经获得的记录集合,此外它还含有一个 Field 对象,用于表示字段。 1.1​  Connection 对象 : Connection 对象的方法共有 7 种,如表 5.1 所示。 表 5.1 Connection对象的方法 方 法 描 述 BeginTrans 在目前的数据库连接上建立一个新的事务(transaction) Close 关闭正在使用的数据库连接,同时中断与实际数据库间的沟通渠道 CommmitTrans 将目前事务的内容写入 Open 打开与实际数据源间渠道沟通 OpenSchema 从数据源的提供者处获取关于数据库的schema 信息 Execute 执行一个不会返回记录集的命令 RollbackTran 取消当前的事务 1.2​  Recordset对象: Recordset对象的方法共有17种,如表5.2 表5.2 Recordset对象方法 方法 描 述 Open 用来取得虚拟记录集.执行SQL语句 Close 关闭虚拟记录集 Move 移动指向虚拟记录集记录的指针 MoveFirst 将指向虚拟记录集记录的指针移到第一笔的位置 MoveLast 将指向虚拟记录集记录的指针移到最后一笔的位置 MoveNext 将指向虚拟记录集记录的指针移到目前位置的下一笔 MovePrevious 将指向虚拟记录集记录的指针移到目前位置的前一笔 Supports 判断虚拟记录集是否支持某些特性 AddNew 针对目前的虚拟记录集新建一笔记录 Delete 从目前的虚拟记录集中删除一笔记录 Update 将虚拟记录集中被更新的记录写入数据库 CancelUpdate 取消保留在内存中关于记录的修改 Requery 以数据源更新虚拟记录集的内容t from the data Find 返回符合特定条件的虚拟记录集 Seek 从建有索引的虚拟记录集中查找一笔记录,并将记录指针指向该记录使之成为当前的记录 clone 复制一份虚拟记录集 1.3 Field 对象 : Field 对象是组成数据表的最基本组件。Field 对象的方法共有 2 种,如表 5.3 所示 表 5.3 Field 对象的方法 方法 描述 AppendChunk 在一个二进制数据或大量文字数据的字段中新建数据 GetChunk 取得全部或部分二进制数据或大量文字数据 2、SQL简介 SQL是一种专门用来处理关系型数据库的语句(statement),也有人将 SQL称作是第 4代程序语言,它是Structured Query Language3个单词的缩写。 主要功能包括: (1)定义、创建和修改数据库及数据表 (2)新增、删除、修改、查询实际数据表中的记录的功能 (3)保持数据库的安全性与数据的整合性 SQL 语句分成两种:DDL 与 DML。DDL 是 Data Definition Language (数据定义语言)的缩写,它支持上述第1项功能,而 DML 是 Data Manipulation Language(数据操作语言)的缩写,它支持上述第2项功能。ADOCE 目前支持的 DDL 如表 5.4 所示,ADOCE 目前支持的 DDL 如表 5.5 所示,所有的DML语句支持Where条件。 表 5.4 ADOCE 控件支持的 DDL 语句 DDL 语句 描 述 Create Database 创建新的数据库文件 Create Table 在数据库文件中创建新的数据表 Alter Table 修改现存数据表的结构 Create Index 根据数据表的字段建立索引 Drop Database 删除数据库 Drop Table 删除数据表o Drop Index 删除索引 表 5.5 ADOCE 控件支持的 DML 语句 DML 语句 描 述 Select 查询数据表中记录 Delete 删除数据表中记录 Insert 向数据表中新增一条记录 Update 修改更新数据表记录 3 ADOCE编程实现 3.1 注册ADOCE的DLL组件 ADOCE属于 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的COM组件,采用动态连接库的形式进行发布,在使用ADOCE进行数据编程,必须对ADOCE的动态连接库下载到目标板,并利用REGSVRCE.EXE对部分需要注册的DLL组件进行注册。ADOCE需要的组件如表5.6 表 5.6 ADOCE 控件的DLL组件 组件名称 是否需要注册 Adoce31.dll 是 Adoxce31.dll 是 Adocedb31.dll 否 Adoceoledb31.dll 否 Msdaer.dll 是 Msdaeren.dll 否 msdadc.dll 是 msdaosp.dll 否 用户可以将上述DLL组件下载到目标板,然后利用REGSVRCE.EXE命令对它们进行注册。本实验程序在运行时自动将上述DLL组件下载到目标板的WinCE操作系统的\windows目录中,然后利用CreateProcess函数运行REGSVRCE.EX命令对DLL组件进行注册。 BOOL CdatabaseDlg::RegisterDLL(void) { BOOL ok1,ok2,ok3,ok4,ok5,ok6,ok7,ok8; ok1=ok2=ok3=ok4=ok5=ok6=ok7=ok8=FALSE; //1.注册DLL ok1=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\adoce31.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok2=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\Adoxce31.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok3=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\Adocedb31.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok4=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\Adoceoledb31.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok5=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\Msdaer.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok6=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\Msdaeren.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok7=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\msdadc.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); ok8=CreateProcess(_T("\RegSvrCe"),_T("/s \Windows\\msdaosp.dll"), NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); if(!(ok1&&ok2&&ok3&&ok4&&ok5&&ok6&&ok7&&ok8)) return FALSE; else return TRUE; } 3.2 ADOCE的初始化步骤: 由于ADOCE属于标准的COM组件,必须初始化一个COM,然后再进行ADO数据源连接的相关编程,具体实现过程如下: BOOL CdatabaseDlg::CreateConnection(void) { CLSID tClsid; HRESULT hr; //0 初始化COM库 hr=CoInitializeEx(NULL,COINIT_MULTITHREADED);//初始化COM库 if(FAILED(hr)) { MessageBox(_T("初始化COM库失败!"),_T("系统信息"),MB_OK|MB_ICONINFORMATION); return FALSE; } //1,得到ADO连接对象对应ClassID hr = CLSIDFromProgID( g_szADOCE31ConnProgID, &tClsid ); if (FAILED(hr)) return FALSE; //2,创建ADO连接对象 hr = CoCreateInstance (tClsid, NULL, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID__Connection, (LPVOID *)&m_pADOCEConn); if((!m_pADOCEConn) || FAILED(hr)) return FALSE; //3.设置连接数据库的Provider hr = m_pADOCEConn->put_Provider(TEXT("cedb")); if FAILED(hr) return FALSE; //4.得到记录集对象的ClassID hr = CLSIDFromProgID( g_szADOCE31RSProgID, &tClsid ); if FAILED(hr) return FALSE; //5.创建结果集对象 hr = CoCreateInstance (tClsid, NULL,CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID__Recordset,(LPVOID *)&m_pADOCERS); if((!m_pADOCERS) || FAILED(hr)) return FALSE; return TRUE; } 3.3 ADOCE的编程实现 ADOCE进行数据库编程基本上属于对SQL语句的执行,下面分别对建立数据库、打开数据库、建立数据表以及增加数据记录的编程进行 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 。 (1)执行SQL的函数: BOOL CdatabaseDlg::ExecSql(CString strSql,BOOL View) { HRESULT hr; VARIANT varStrSql,varEmpty; VariantInit(&varStrSql);//初始化VARIANT变量 VariantInit(&varEmpty);; varStrSql.bstrVal = SysAllocString(strSql); varStrSql.vt = VT_BSTR;//定义字符串 hr = m_pADOCERS->Open(varStrSql,varEmpty,MSADOCE::adOpenDynamic, MSADOCE::adLockOptimistic,MSADOCE::adCmdText); SysFreeString(varStrSql.bstrVal); if (FAILED(hr)) return FALSE; if(View) { long iCount = 0; hr = m_pADOCERS->get_RecordCount(&iCount); if(iCount>0) AddRecordToView(); } m_pADOCERS->Close(); return TRUE; } (2) 利用“CREATE DATABASE 数据库名”建立数据库 BOOL CdatabaseDlg::CreateDatabase(LPCTSTR szDbName) { CString strSql; strSql.Format (_T("CREATE DATABASE '%s'"),szDbName); if(!ExecSql(strSql)) return FALSE; else return TRUE; } (3) 利用CREATE TABLE建立数据表 void CdatabaseDlg::OnBnClickedbtncreatetabe() { CString m_strSql; m_strSql="CREATE TABLE student(StuID varchar(20),Name varchar(20),age int,class varchar(10))"; if(!ExecSql(m_strSql)) MessageBox(_T("建立数据表失败!"),_T("系统信息"),MB_OK|MB_ICONINFORMATION); else MessageBox(_T("建立数据表成功!"),_T("系统信息"),MB_OK|MB_ICONINFORMATION); } (4) 打开数据库函数 BOOL CdatabaseDlg::OpenDatabase(LPCTSTR szDbName) { HRESULT hr; VARIANT varConn1; //与指定的数据库建立连接 hr = m_pADOCEConn->Open(LPTSTR(szDbName),TEXT(""), TEXT(""),MSADOCE::adOpenUnspecified); if FAILED(hr) return FALSE; VariantInit(&varConn1); varConn1.pdispVal=m_pADOCEConn; varConn1.vt=VT_DISPATCH; //设置结果集对象到已建立的连接上 hr=m_pADOCERS->put_ActiveConnection(varConn1); if (FAILED(hr)) return FALSE; return TRUE; } (5) 增加数据记录 void CdatabaseDlg::OnBnClickedbtnaddrecord() { CAddRecordsetDlg dlg(_T("增加记录")); if(dlg.DoModal() ==IDOK) { HRESULT hr; CString m_strSql,strValue; VARIANT varStrSql,varEmpty,varFieldValue; VariantInit(&varStrSql); VariantInit(&varEmpty); m_strSql="SELECT * FROM student"; varStrSql.bstrVal =SysAllocString(m_strSql); varStrSql.vt = VT_BSTR; hr = m_pADOCERS->Open(varStrSql,varEmpty,MSADOCE::adOpenDynamic, MSADOCE::adLockOptimistic,MSADOCE::adCmdText); SysFreeString(varStrSql.bstrVal); if(FAILED(hr)) { MessageBox(_T("打开数据库错误"),_T("系统信息"),MB_OK|MB_ICONINFORMATION); return; } m_pADOCERS->AddNew(varEmpty,varEmpty); strValue=dlg.m_studentID; varFieldValue.bstrVal =SysAllocString(strValue); varFieldValue.vt =VT_BSTR; SetFieldValue(0,varFieldValue); strValue=dlg.m_studentName; varFieldValue.bstrVal =SysAllocString(strValue); varFieldValue.vt =VT_BSTR; SetFieldValue(1,varFieldValue); varFieldValue.iVal =dlg.m_studentAge ; varFieldValue.vt =VT_I2; SetFieldValue(2,varFieldValue); strValue=dlg.m_studentClass; varFieldValue.bstrVal =SysAllocString(strValue); varFieldValue.vt =VT_BSTR; SetFieldValue(3,varFieldValue); m_pADOCERS->Close(); ShowData();//显示数据函数 } } [实验内容] 1、掌握在Windows下的DLL等组件的注册; 2、掌握利用ADOCE开发嵌入式数据库的过程; 3、掌握SQL语句的使用方法 [实验步骤] 第一步:连接好实验系统,打开实验箱电源; 第二步:利用VS2005.net打开数据库工程文件database.sln,由于本实验程序实现ADOCE组件的自动下传到目标板,必须在VS2005.net设置DLL组件的所在路径以及下传到目标板的路径,如图5-1所示。 图 5-1 ADOCE组件的自动下传设置 第三步:编译database工程文件;点击运行按钮自动将所需要的文件下载(database.exe和ADOCE组件),运行界面如图5-2所示: 图 5-2 ADOCE数据库测试程序运行界面 第四步:程序界面的操作过程: (1)、控件注册操作:单击“注册控件”按钮对ADOCE组件进行注册,只有ADOCE组件注册成功后采用进行其他操作。 (2)、新建数据库操作:单击“新建数据库”按钮建立实验数据库;如果数据库存在可以跳过新建数据库步骤。 (3)、打开数据库操作:单击“打开数据库”按钮打开数据库; (4)、新建数据表操作:单击“新建数据表”,程序自动建立一个名为“student”的数据表,且包括StuID、Name、age、class四个字段。 (5)、增加数据记录操作:单击“增加记录”,可向数据库新增一条记录,运行界面如图5-3 图 5-3 增加记录界面 (6)、数据记录删除操作:选中一条数据记录,然后单击“删除记录”按钮; (7)、查询数据记录操作:单击“查询记录”,可以查询符号条件的记录,运行界面如图5-4 图 5-4 数据记录查询界面 [习 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 与思考题] 1、​ 修改源程序,增加对数据记录进行修改的操作; 2、​ 源程序中查询记录和增加记录窗体采用同一个窗体文件,但其Caption显示分别为“查询记录”和“增加记录”,分析其实现过程。 3、​ 如果需要对数据库中的数据表进行删除操作,应怎样实现? 4、​ 修改源程序,增加一个“或”条件查询操作。 1、​ 对格式的要求 知网学位论文检测为整篇上传,上传论文后,系统会自动检测该论文的章节信息,如果有自动生成的目录信息,那么系统会将论文按章节分段检测,否则会自动按每一万字左右分段检测。格式对检测结果可能会造成影响,需要将最终交稿格式提交检测,将影响降到最小,此影响为几十字的小段可能检测不出。都不会影响通过。系统的算法比较复杂,每次修改论文后再测可能会有第一次没测出的小段抄袭(经2 年实践经验证明,该小段不会超过200 字,并且二次修 改后论文一般会大大降低抄袭率)
本文档为【嵌入式SQL数据库编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_159992
暂无简介~
格式:doc
大小:194KB
软件:Word
页数:12
分类:互联网
上传时间:2011-05-21
浏览量:26