对数据库的操作并不是VC的最强项,很久以来使用VC来完成诸如对ODBC或其他数据库的连接,都需要许多繁复的语句写来写去。头痛!我们有许多优秀的数据库开发工具,不用VC也可以做一切事。但是…… 如今一切不同了,我们有了VC5.0这个好帮手,它提供你意想不到的完美的数据库连接与操作方法。想一想,连接网络服务器上的MSSQLServer、Sybase、Oracle……容易得可以与PowerBuilder媲美。从此,我们可以仅仅使用我们熟悉的VC环境,使用我们朝夕相处的MFC类库,而仅考虑如何将Sybase的数据直接在我的VC程序中得到最好的使用,不再需要转换文件在程序之间跳来跳去了。
下面,我将介绍给大家两种最简单地使用、操作你后台数据库数据的方法。
首先,我们知道Microsoft一种被称为通用数据库转换接口的标准,也就是其操作系统都提供的ODBC接口。VC5.0正是基于这种技术的普及与发展而提供数据库操作与连接功能,换句话说,VC对数据库的一切操作是要通过ODBC来完成的。从这一点来讲,它也许没有其他的数据库开发软件提供的私有接口速度快,可它是通用而且可脱离VC环境的,就是从Microsoft产品的角度来讲,它的兼容性与稳定性也是无可非议的。
那么我们已经清楚第一件事要做什么了。非常正确,配置好我们的ODBC接口。你的服务器上一定安装了MS
SQLServer、Sybase、Oracle或其他的某种数据库系统的Server版。那么好,在你本人的机器上安装相应数据库系统的Client版。一般情况,安装的同时,数据库系统会自动将其ODBC的Driver复制到你的机器中的。剩下的是将你的Client端连接好你的服务器,再在你的ODBC中建立一个连接后台数据库的新的DataSource(当然你也可以将这个工作留到VC中完成)。现在一切OK了,我们可以开始做程序了。
一、建立一个Database Project
什么是建立一个Database Project呢?实际上它等同于使用PowerBuilder操作一个Database,可以提供在后台服务器的数据库中可完成的一切操作。譬如:表的创建、删除、修改以及数据的填充,还可以创建视图、触发器、存储过程等。它全面支持标准SQL语言,可以将对表的操作直接转换为SQL语言。具体方法如下:
1、打开App Wizard,在其Project项中有一项DatabaseProject,添加名称,可以选择加入一存在的项目中,也可以创建一独立项目,选择OK。
2、这时会弹出一个与我们在ODBC设置时一样的对话框,要求选择适当的DataSource,并确认。
3、一旦选择好就会进行相应数据库的连接,连接成功后会出现树状结构表现数据库的构成,可对相应的表、视、存储过程进行操作;如果失败,将显示连接不成功,不会出现数据库操作。
二、建立一个新的Database
建立一个DatabaseProject仅能完成对一个已建立的Database的操作,但如果没有Database就不能对其操作。没关系,我们可以通过NewDatabase,在可以连通的后台数据库服务上建立新的设备和数据库。
1、打开App Wizard,在其Project项中有一项NewDatabase,添加名称,可以选择加入一存在的项目中,也可以创建一独立项目,选择OK。
2、它将提示你连接那一个数据库软件,确认。
3、连接成功后,会提示你建立设备、数据库和日志,你需要填入大小与名称。
4、建好的数据库可让你做你要完成的操作。
三、建立一个使用数据库数据的Project
建立一个使用数据库数据的Project,就是实现你在程序中直接调用你数据库中数据的梦想。你可以只连接一个表,也可以同时连接许多表,数据库中的表项被直接转换为你熟悉的结构,操作起来是多麽的方便。它还提供你两种数据库的连接方式,即静态连接和动态连接。顾名思义,动态连接可以使你的数据随数据库的转变而转变。方法如下:
1、打开AppWizard,添加名称,建立一个新的EXE执行程序,可以选择加入一存在的项目中,也可以创建一独立项目,选择OK。
2、在步骤3中选择添加Database Source,会弹出我们熟悉的ODBC的DatabaseSource的选择框。如果我们有做好的数据源,选择即好;要是没有,那只能自己再建立一个新的数据源了(若不会建请参看有关手册,在此不加详述)。
3、选好数据源,程序会自动去连接后台数据库,打开相应数据库,选择我们需要使用的一张或多张表,单击OK。
4、其他步骤与建立其他EXE执行程序一致。
以上操作完成之后,将数据库中的数据拿到手变得异常容易。在VC5.0中有一个CRecordSet类,一个或多个数据库被定义成一个CRecordSet的衍生类,数据库中的数据项被定义成CRecordSet衍生类中的成员变量。也就是说,对数据库的操作变成了对CRecordSet类的操作。下面简单介绍一些CRecordSet类的成员函数:
CRecordset::Open();
virtual BOOL Open( UINT nOpenType
= AFX—DB—USE—DEFAULT—TYPE, LPCTSTR lpszSQL
= NULL,
DWORD dwOptions = none );
数据库的打开函数。
nOpenType 可以是动态的(dynaset),也可是静态
的(snapshot);
lpszSQL 一个标准SQL语句的字符串;
dwOptions 数据库的操作方式。
例句:
rs.Open( CRecordset::dynaset,—T( "Select L—N
ame from Customer" ) );
CRecordset::Close
virtual void Close( );
数据库的关闭函数。
例句:
if( !rsCustSet.Open( ) )
return FALSE;
rsCustSet.Close( );
CRecordset::IsBOF
BOOL IsBOF( ) const;
光标是否在数据库头。
CRecordset::IsEOF
BOOL IsBOF( ) const;
光标是否在数据库尾。
CRecordset::MoveNext
void MoveNext( );
光标向后移一位。
CRecordset::MovePre
void MovePre( );
光标向前移一位。
CRecordset::AddNew
virtual void AddNew( );
数据库加一条新记录。
CRecordset::Edit
virtual void Edit( );
将数据库新记录添加数据。
例句:
rsCustSet.Edit( );
rsCustSet.m—dwCustID = 2795;
rsCustSet.m—strCustomer = "Jones Mfg";
if( !rsCustSet.Update( ) ) return;
CRecordset::Update
virtual BOOL Update( );
将数据库记录更新。
CRecordset::Delete
virtual void Delete( );
删除数据库中的一条记录。
配合使用CRecordView类,可以将数据读出并显示在View中。
综合以上的介绍,你是否觉得在VC5.0中完成数据库操作是一件简单易行的事?