C++ Builder数据库综合开发实践

一套原来在Access上开发的桌面系统,网页调阅使用ASP编程,数据维护系统使用C++Builder编程。由于Access是一个桌面的共享型数据库,所以在通用性和网络开发方面都存在一些问题。因此,需要将该系统移植到服务器型的数据库上。使系统既可以通过桌面软件维护数据,又可以有大量用户通过网页调看数据(结果)。

系统初始软件为:Windows98第二版、Access97、C++Builder4.0、C++Builder5.0、MDAC(Microsoft Data Access Component 2.6中文版)。

一、移植到Oracle的尝试

在机器上安装Oracle 7.3桌面版,由于使用不熟练,所以选择默认安装,除选择语言Simplified Chinese外,其他都选择默认,一路装下去,没有问题,重新启动系统。运行Net Easy Config,配置需要的数据库别名,然后用SQL Net连接试验,用户名输入system,密码输入manager,连接服务器注意,不要输入服务器的地址,而是输入刚才建立的别名,进去了。Ok!

此时开始测试ODBC,建立ODBC数据源。此时,ODBC中有两个有关Oracle的驱动,一个是Microsoft ODBC for Oracle,另一个是Oracle 7.3,这是该公司自己开发的驱动。可是怎么选择驱动程序都不行,不是提示Oracle的驱动没有安装,就是说某个DLL文件找不到。真是说不行,就不行,行也不行。

多次试验均无效。。。。

检查AUTOEXEC.BAT文件,其中有ORACLE的路径。那末,问题会在什么地方呢?本着怀疑一切的态度,在MSDOS方式下随手输入了一个PATH命令,奇怪,里面居然没有ORACLE的路径!打开AUTOEXEC.BAT文件一琢磨,路径是不是太长?把路径中的其他目录全都注释掉,重启系统,嘿!数据源可以建立了,而且两个驱动程序哪个都能够工作。原来由于系统中安装了C++Builder的两个版本,而该软件的目录又特别深,造成PATH环境变量的溢出,而在WINDOWS环境下启动时的提示我们看不到,所以没有发现这个问题。现在知道了,重新调整一下AUTOEXEC.BAT文件,保留一个C++Builder的路径。以后得记住安装C++Builder时最好自己指定一个目录,这样可以缩短路径。这可是说行就行,不行也行。

经过对Oracle的测试,发现将Access数据库直接移植到Oracle数据库中时,对文本字段(TEXT,MEMO)的迁移总有问题,且该系统使用、安装过于复杂,对机器配置的要求也太高,而该系统需要安装的用户较多,且使用者水平参差不齐,所以决定改用现在在自由软件界比较流行的免费数据库系统MySQL。

二、移植到MySQL的经历

1.该系统的安装比较简单,若认为自己没有能力安装该软件的话,还可以从网络上下载一个叫PHPTriad for windows的软件,该软件安装时没有任何选项,自动安装好MySQL。(实际上,该软件同时还安装好了APACHE服务器、PHP语言解释器,这正好符合将来把ASP的网页换到PHP上去;另外,该软件还同时安装配置好了一个网页数据库维护工具PHPMyAdmin,PHPMyAdmin对于SQL语言不算熟的人来说管理数据库极其方便。)

2.再安装MYODBC(即ODBC for MySQL,我的是2.5版本),注意下载该软件时,要分清95版还是NT版的。安装也很简单,一路OK。好了,建立数据源work,填好IP地址,数据库名填mymember(这时系统提供的数据库),进行测试,不行?改用系统自动安装的sample-mysql数据源连接,链上了。仔细检查配置,没有错误,为什么系统自己做的数据源可以用,我做的就不行呢?把自己建立的删掉,把sample-mysql改名为work,再连接,嘿嘿,不行了!哈哈,原来就出在名字上,在work后面加上-mysql,再连接,好了,原来myodbc要求它的数据源名称必须以mysql结尾!解决了数据源,下面开始移植原来的Access数据库。

移植工作比较简单,打开Access数据库,选中第一张表,从File菜单中选择“另存为/导出”,选择“另存为一个外部文件或数据库”,选确定,在弹出的对话框中的“保存类型”下拉选单中选择“ODBC数据库”,又弹出一个“导出”的对话框,如果打算给该数据表改名的话,现在可以输入新的名字,然后选择确定,在弹出的“选择数据源”对话框中点Machine Data Source(机器数据源),找到自己建立的work-MySQL数据源,按确定。此时会回到Access数据库,如果数据表很大的话,状态栏中会有一个导出的进度,否则,导出已经完成。

导出成功后,通过PHPMYADMIN检查导出的数据库,结构、内容都正常。需要注意的是,如果数据表中用到了Access提供的ID(自动增量)字段的话,需要手工在目标数据库中修改对应字段的属性(这在PHPMyAdmin中很容易实现,找到该字段后点“改变”,在该字段的属性最后一项“额外”的下拉选单中选择auto_increment,然后保存。PHPMyAdmin的界面是英文的?其实只要在安装有PHPMyAdmin的目录Apache\Htdocs\PHPMyAdmin中找到config.inc.php文件,搜索require,把引号中的“english.inc.php”改成“chinese_gb.inc.php”,再去调用网页中的PHPMyAdmin,嘻嘻,是不是变成中文了?其实chinese_gb.inc.php是一个文件名,就在该目录下,你还可以把界面变成BIG5码呢)。

3.终于把移植的工作做完了,下面开始用C++BUILDER编程。对数据库使用ADO来访问。步骤如下:在ADO控件标签中选ADOTable,在主窗口上先放置一个ADOTable1,然后点击左边对象观察器(Object Inspector)中ConnectionString右边的“…”图标,选“Use Connection String”,点“Build”,在“Provider”标签中选择“Microsoft OLE DB Provider for ODBC Drivers”,点“Next>>”按钮,在“specify the source of data”中选“use data source name”,从下拉选单中选择数据源work-MySQL,点“Test Connection”,显示连接成功,确定,OK,返回,在对象观察器中Table Name属性点下拉选单,选择需要的数据表。再从Data Access控件标签中选DataSource,在主窗口上放置一个DataSource1,在对象观察器中DataSet属性点下拉选单,选择ADOTable1,下面进行界面输出的布局,选择“Data Controls”控件标签中的DBEdit根据需要放置,并把DataSource属性设置为DataSource1 ,DataField属性设置为所需要的字段名。如此放置几个字段,最后从“Data Controls”控件标签中选“DBNavigator”放在窗口上。再把ADOTable1的Active属性改为true,咦,怎么有的字段显示成(MEMO),先不管他,运行程序,输入一些内容,点击提交,怎么没了?有的字段还缩短了,多试几次,发现新输入的内容不能超过原来的长度,那么原来是空的字段就永远没法输入内容了。这是怎么回事?这种用法肯定没有问题,以前在Access数据库上就是这么用的。那么,就是MySQL的ODBC有问题,退出C++Builder,打开数据源的选项仔细分析,其中第一项vaaaa很象。把它选中,确定,重新运行C++Builder,再运行程序,一切OK。原来MySQL这样的自由软件,其ODBC选项很多,是为了适应各方面需要,不象微软或其他的数据库那样默认值就可以用。这个选项可能是为了优化一些网络上的应用,而把数据库字段的默认值总是假设为最小状态,从而造成这个问题。这可能也是自由软件的一个小缺点吧。

时间: 2024-09-19 09:41:17

C++ Builder数据库综合开发实践的相关文章

数据库综合开发实践

数据|数据库 数据库综合开发实践马磊.张万里 一套原来在Access上开发的桌面系统,网页调阅使用ASP编程,数据维护系统使用C++Builder编程.由于Access是一个桌面的共享型数据库,所以在通用性和网络开发方面都存在一些问题.因此,需要将该系统移植到服务器型的数据库上.使系统既可以通过桌面软件维护数据,又可以有大量用户通过网页调看数据(结果).系统初始软件为:Windows98第二版.Access97.C++Builder4.0.C++Builder5.0.MDAC(Microsoft

SQLite数据库操作实践

 SQLite数据库操作实践 SQLite存储类型 null - 空值  integer - 有符号整数,自增列定义 id integer primary key autoincrement real - 浮点数,存储为8-byte IEEE浮点数  text - 文本字符串 使用数据库编码(UTF-8, UTF-16BE 或 UTF-16LE)进行存储 blob - 二进制数据,如图片.声音等等  也可以接受其它数据类型例如datetime,varchar,nvarchar,decimal,f

基于Sql Server 2008的分布式数据库的实践(四)

原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create database V3 3.数据表设计 Win7 创建数据表student_7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 create table student_7 (     sid int not null,     sex nvarchar(1) not nul

基于Sql Server 2008的分布式数据库的实践(二)

原文 基于Sql Server 2008的分布式数据库的实践(二) 从Win7连接Win2003的Sql Server 2008 1.新建链接服务器链接到Win2003的Sql Server 2008 2.查看Win2003上面的IP地址,配置"新建链接服务器"中的"常项"   3.配置"新建链接服务器"中的"安全项",本地登录为"sa",远程用户也为"sa" 4.链接成功 Win7启动

基于Sql Server 2008的分布式数据库的实践(一)

原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选择"属性".左侧选择"安全性",选中右侧的"SQL Server 和 Windows 身份验证模式"以启用混合登录模式 3.选择"连接",勾选"允许远程连接此服务器",然后点"确定" 4.展

基于Sql Server 2008的分布式数据库的实践(五)

原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ----------------------------------------------------------------------------------------------------------------- Index.php----选择界面,并且实现学生和老师的注册 sql_ini.php----SQL配置文件 ./student----学生的后台 ./admin----老师的后台 -------

基于Sql Server 2008的分布式数据库的实践(三)

原文 基于Sql Server 2008的分布式数据库的实践(三) 配置PHP 1.打开PHP配置文件,找到extension=php_mssql.dll,将前面的注释符号去掉 2.找到mssql.secure_connection,将Off改为On   3.找到com.allow_dcom = true,将前面的注释符号去掉 4.下载正确版本的 ntwdblib.dll (2000.80.194.0),覆盖Apache-20/bin/ntwdblib.dll.覆盖php-5.2.14-Win3

YII2数据库查询实践_数据库其它

初探yii2框架,对增删改查,关联查询等数据库基本操作的简单实践. 数据库配置. /config/db.php 进行数据库配置 实践过程中有个test库->test表->两条记录如下 mysql> select * from test; +----+--------+ | id | name | +----+--------+ | 1 | zhuai | | 2 | heng | +----+--------+ 18 rows in set (0.00 sec) sql 查询方式 yii

数据库优化实践:文件、文件组、分区篇

优化技巧主要是面向DBA的,但我认为即使是开发人员也应该掌握这些技巧,因为不是每个开发团队都 配有专门的DBA的. 第九步:合理组织数据库文件组和文件 创建SQL Server数据库时,数据库服务器会自动在文件系统上创建一系列的文件,之后创建的每一个 数据库对象实际上都是存储在这些文件中的.SQL Server有下面三种文件: 1).mdf文件 这是最主要的数据文件,每个数据库只能有一个主数据文件,所有系统对象都存储在主数据文件中, 如果不创建次要数据文件,所有用户对象(用户创建的数据库对象)也