haihongyuan.com
海量文库 文档专家
全站搜索:
您现在的位置:首页 > 幼儿教育 > 幼儿读物幼儿读物

邓伟志 1938_22-38

发布时间:2014-02-13 13:01:28  

星战风暴 http://www.yikuang.net

4.3 数据库编程
4.3.1 数据库连接技术 1.ODBC 微软公司ODBC(Open Database Connectivity, 开放数据库互连),,建立了一组规范,并提供 了一组对数据库访问的标准API(应用程序编 程接口)。基于ODBC的应用程序对数据库的 操作不依赖任何DBMS,由对应的DBMS的 ODBC驱动程序完成。能以统一的方式处理所 有的数据库。

2.ADO和OLE DB
Microsoft推出的一致数据访问技术,为关系型或 非关系型数据访问提供了一致的访问接口。 ADO提供了高层软件接口,不仅可在高级语言 开发环境中使用,还可以在一些脚本语言中使 用,这对于WEB程序访问数据库提供了捷径。 OLE DB 提供了底层软件接口

3.JDBC
Java 数据库连接JDBC (Java Database Connectivity)由一组用 Java 编程语言编写的类 和接口组成。JDBC 为数据库开发人员提供了 一个标准的API。程序可在任何平台上运行 。

4.3.2 利用V C开发应用系统
1.MFC ODBC类简介 (1)Cdatabase:建立与数据源的连接 virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ ODBC; ” , BOOL bUseCursorLib = TRUE ); throw( CDBException, CMemoryException );
CDatabase m_db; m_db.Open("MyDS");

m_db.Open(NULL,FALSE,FALSE,"ODBC;DSN =MyDS; UID=ABC;PWD=1234"); virtual void Close( );

(2)CRecordset类
从数据源选择的一组记录(记录集)。 virtual BOOL Open( UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, DWORD dwOptions = n o n e ) ; throw( CDBException, CMemoryException );

(3)CRecordView
该类提供了一个表单视图与某个记录集直接相连。
在记录集与表单视图的控件之间传输数据。

(4)CDBException
该类代表ODBC类产生的异常。 对于数据库操作错误,出现 CDBException 类型 的 异 常 , 其 它 类 型 的 错 误 , 出 现 CMemoryException异常。

2.执行SQL语句

void ExecuteSQL(LPCTSTR lpszSQL)

3 数据库操作的基本过程
(1)连接数据库 建立 CDataBase 类对象,通过 CDataBase 类的 Open函数 连接数据库。 (2)执行SQL语句 对于要返回结果集的查询操作,可以通过 CRecordSet 类 的Open函数实现,对于不返回结果集的其它SQL语句 可以通过CdataBase类的ExecuteSQL函数实现。 (3)断开与数据库的连接 通过CDataBase类的Close函数断开与数据库的连接。

4.3.3 编程实例
连接SQL Server 2000数据库company。 #include "stdafx.h" #include <string> #include <afxdb.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif

CDatabase database ; CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // 初始化MFC并进行判断 if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: change error code to sui

t your needs cerr << _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; }

else { BOOL bStatus = false; //设置等待建立连接的时间 database.SetLoginTimeout(10); try { //与数据源LibraryDB建立连接 bStatus=database.Open(NULL,FALSE,FALSE,"ODBC;DSN=Co mpanyDS; "); if(bStatus) cout<<"连接成功!"<<endl; else cout<<"连接失败!"<<endl; }

catch(CMemoryException *pEx) //异常处理 { pEx->ReportError(); } catch(CDBException * pDBEx) { pDBEx->ReportError(); //输出错误信息 cout<<"RetCode:"<<pDBEx->m_nRetCode <<"strError:"<<pDBEx->m_strError <<" strState:"<<pDBEx->m_strStateNativeOrigin<<"\n"; } //关闭数据库 database.Close(); } return nRetCode; }

查询库company中表employee的记录
CDatabase database ; CWinApp theApp;
BOOL bStatus = false; //设置等待建立连接的时间 database.SetLoginTimeout(10); try { //与数据源LibraryDB建立连接 bStatus=database.Open(NULL,FALSE,FALSE,"ODBC;DSN=Li braryDB; "); }

//异常处理 catch(CMemoryException *pEx) { pEx->ReportError(); } catch(CDBException * pDBEx) { pDBEx->ReportError(); //输出错误信息 cout<<"RetCode:"<<pDBEx->m_nRetCode <<"strError:"<<pDBEx->m_strError < < " s t r S t a t e : " < < p D B E x >m_strStateNativeOrigin<<"\n"; }

CRecordset recset(&database); CString strSQL; strSQL="select * from 图书 "; //要执行的 SQL语句 //打开查询结果集 recset.Open(CRecordset::forwardOnly,strS QL,CRecordset::readOnly); if(recset.IsEOF()) {//查询结果集为空 cout<<"很遗憾,没有记录!"<<endl; } else

{//输出表中的列名 cout<<"编号 姓名 性别 工资 "<<endl; CString temp; while(!recset.IsEOF()) {//每循环一次,输出结果集中的一条记录 recset.GetFieldValue("no",temp);cout<<(LPCTSTR)temp; recset.GetFieldValue("name",temp);cout<<(LPCTSTR)temp; recset.GetFieldValue("sex",temp);cout<<(LPCTSTR)temp; recset.GetFieldValue("salary",temp);cout<<(LPCTSTR)temp; recset.MoveNext(); cout<<endl; } recset.Close(); } database.Close(); //关闭数据库

为表employee插入记录。
CDatabase database ; CWinApp theApp; BOOL bStatus = false;//与数据源LibraryDB建立 连接 bStatus=database.Open(NULL,FALSE,FALSE,"ODBC; DSN=LibraryDB; "); CString strSQL;

strSQL=“INSERT INTO student V A L U E S ( ‘ 2 0 0 1 ’ , ‘ 邢 雪 花’,‘女’,650)”; //要执行的SQL语句 database.ExecuteSQL(strSQL);

database.ExecuteSQL(“INSERT INTO student VALUES (‘2020’,‘翟建 设’,‘男’,746)”);
database.Close(); //关闭数据库

修改表employee中记录。
CDatabase database ; CWinApp theApp;

BOOL bStatus = false; //与数据源LibraryDB建立连接 bStatus=database.Open(NULL,FALSE,FALSE,"ODBC;DSN= LibraryDB; "); CString strSQL;

database.ExecuteSQL("UPDATE employee SET salary=900 "+"where no = '2001'"); strSQL=“UPDATE employee SET no= ‘3000’” + “WHERE name= ‘翟建设’”; database.ExecuteSQL(strSQL);
database.Close(); //关闭数据库

删除表employee中记录。
CDatabase da

tabase ; CWinApp theApp;
BOOL bStatus = false; //与数据源建立连接 bStatus=database.Open(NULL,FALSE,FALSE,"ODBC;DSN= LibraryDB; "); CString strSQL; strSQL="DELETE FROM employee WHERE no='1004'"; database.ExecuteSQL(strSQL); database.Close(); //关闭数据库

在company中建立表
CDatabase database ; CWinApp theApp; BOOL bStatus = false; //与数据源LibraryDB建立连接 bStatus=database.Open(NULL,FALSE,FALSE,"OD BC;DSN=LibraryDB; ");

CString strSQL; strSQL= "CREATE TABLE student (s_num char(4), s_name char(6) null, score int)"; //建立表 database.ExecuteSQL(strSQL); strSQL= "INSERT INTO student(s_num, s_name,score) VALUES('9901', '张学军',98)"; database.ExecuteSQL(strSQL); database.Close(); //关闭数据库


上一篇:生与死——达芬奇
下一篇:认识汉字
网站首页网站地图 站长统计
All rights reserved Powered by 海文库
copyright ©right 2010-2011。
文档资料库内容来自网络,如有侵犯请联系客服。zhit326@126.com