怎样用BCB连接Access数据库?

yuyulily 2001-04-17 06:58:00
请问怎样用BCB连接Access数据库?
...全文
1057 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛童子 2010-06-06
  • 打赏
  • 举报
回复
楼主分配不均衡啊,楼上回答问题的人一分都没得到,大家平均也行啊!
rh 2001-04-20
  • 打赏
  • 举报
回复
呵呵你看他把分给了谁呢??
^_^
cloudred 2001-04-20
  • 打赏
  • 举报
回复
不错,给分!
rh 2001-04-17
  • 打赏
  • 举报
回复
耶!ado确实不错
可惜我没有用过:(
millet 2001-04-17
  • 打赏
  • 举报
回复
不要搞得那么麻烦。
用ADO,以文件方式访问,拿到别的机器上,什么配置都不用改,就能用了。多好!

演示:
建一个Access数据库文件db1.mdb,其中放上一个表,表名为table1,把数据库和可执行文件放在一起。

在窗体上放一个TADOQuery.起名为ado
在构造函数中放上:
AnsiString DataBase = ExtractFilePath(Application->ExeName)+"db1.mdb";
if (FileExists(DataBase))
{
ado->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+DataBase;
}

在你的某个按钮的响应事件中加入:
AnsiString sql = "select count(*) from table1";
ado->Close();
ado->SQL->Clear();
ado->SQL->Add(sql);
try
{
ado->Open();
}
catch(...)
{
ado->Close();
ShowMessage("error");
return;
}
ShowMessage("table1中记录的条数为:"+ado->Fields->Fields[0]->AsString);
ado->Close();


我并不是说BDE就不行,不过这种场合,数据库是Microsoft的,用Microsoft的ADO确实比较合适。
rh 2001-04-17
  • 打赏
  • 举报
回复
还是抄的:回复人:trybird(菜鸟) (2000-3-17 23:42:00) 得0分
首先,建立指向你的Access数据库的ODBC数据源名称(Data Source Name,简称DSN)

1.Windows开始菜单 -> 设置 -> 控制面板

在控制面板中双击“ODBC Data Source(32bit)”(32位ODBC数据源)

2.单击 “User DSN” 舌页,再单击“Add" 按钮,进入选择数据库驱动程序界面,
点选“Microsoft Access Driver(*.mdb)”, 再单击“Finish”(完成)按钮。

3.确保System Database的选取是“None”(默认)。
在Data Source Name文本框中输入你自己命名的DSN,比如我起了“MyAccessDSN”的
名字,Description是对DSN的说明注释,你可以不输;再请单击Database框架中的
Select按钮——

4.在打开的Select Database对话框中选择你的Access数据库文件,这里假设它是
MyAccess.MDB,选上后单击OK,再OK,你已经能够看到自己设定的User DSN了,
单击“确定”,完成对DSN的设定。记住咱们的DSN是“MyAccessDSN”。

 回复人:trybird(菜鸟) (2000-3-17 23:45:00) 得0分
其次,设置数据访问和数据控制构件。

1.在BCB的IDE中,点击Data Access构件页,分别点选TDatabase,TTable及TDataSource
构件放在窗体上,它们的默认名分别是Database1,Table1和DataSource1。

2.双击Database1,打开Form1->Database1 Database对话框。单击Driver name组合框
的下拉按钮,在下拉菜单中选“Microsoft Access Driver (*.mdb)”。
再单击"Default"按钮,在“Parameter overrides:”的框中配置DB装载参数:
ODBC DSN=MyAccessDSN
DATABASE NAME=MyAccess.MDB
将Login prompt复选框前的勾号取消,这样登录DB时就不会询问你用户名和口令了。
最后在Database的Name文本框中输入你命名的DB名,比如咱给它命名为MyAcDB。
然后单击OK按钮。

3.点击BCB的Data Access构件页,分别点选TDBGrid和TDBNavigator
构件放在窗体上,它们的默认名分别是DBGrid1和DBNavigator1。
将它们的DataSource属性都设为DataSource1。

 回复人:trybird(菜鸟) (2000-3-19 2:54:00) 得0分
对不起,昨天确实喝多了,高了
可能你确实照我讲的做过了,不然不会给我分的

我还想说的是最好不要用直接设置属性的方法来打开Database和Table,
而应在程序里写代码来控制它。比如:

在窗体创建时这样写:

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Database1->Connected=true; //OR Database1->Open();
Table1->Active=true; //OR Table1->Open();
}

在窗体关闭时这样写:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Database1->Connected=false; //OR Database1->Close();
Table1->Active=false; //OR Table1->Close();
}

DBNavigator构件基本上可以满足你的控制需要,它们可以滚动记录到头一条,前一个,后一个,末一条,
还能对记录增加、删除、修改、提交、取消及刷新——
你也可以对DBNavigator的VisibleButtons属性进行修改,使得只有你想要用的按钮才显示出来。
你也可不用DBNavigator,而自己构造按钮来实现对DB表的操作,只要在你的按钮的Click单击事件中加如下的代码即可——

头一条记录
Table1->First();

前一个记录
Table1->Prior();

后一个记录
Table1->Next();

末一条记录
Table1->Last();

增加记录
Table1->Insert();//OR Table1->Append();

删除记录
Table1->Delete();

修改记录
Table1->Modify();

提交记录
Table1->Post();

取消对记录的操作
Table1->Cancel();

刷新记录
Table1->Refresh();

rh 2001-04-17
  • 打赏
  • 举报
回复
抄来的:
使用 Database 控件
Database1->Params->Add("DATABASE NAME=" +YourDatabaseName);
Database1->Params->Add("OPEN MODE=READ");
Database1->Params->Add("LANGDRIVER=");
Database1->Params->Add("SYSTEM DATABASE=");
Database1->Params->Add("USER NAME=" + UserName);
Database1->Params->Add("PASSWORD=" + PassWord);
luhongjun 2001-04-17
  • 打赏
  • 举报
回复
millet(小米) 
但我要用BDE啊!
millet 2001-04-17
  • 打赏
  • 举报
回复
用ADO吧。
Direct Oracle Access 组件有两种版本,Direct Oracle Access Standard version 和 Direct Oracle Access Object version Object版允许你通过TOracleObject和TOracleReference 对象使用 Oracle8的对象扩展。 如果您正在使用 Borland 的 Delphi 或 C++Builder 开发 Oracle 应用程序,那么 Direct Oracle Access 组件集将帮助您实现 Borland 开发工具和 Oracle 数据库系统之间的无缝集成。 使用 Direct Oracle Access,应用程序可以充分利用两个产品的优势。 主要特性: 高性能 ——Oracle的性能特性对于在线业务和批处理程序非常有用。通过Direct Oracle Access,能够直接访问Oracle接口,从而使得标准的数据库访问函数实现性能最优。而该组件集还支持Array Fetching, Array DML, PL/SQL Blocks, PL/SQL Tables、本地语句缓存和直接路径装载引擎,进一步优化了您程序的性能关键函数。 程序发布方便 ——Direct Oracle Access程序无需BDE或ODBC等中间件,只要求Oracle SQL*Net 或Net8。这样,您在布署应用程序时,无需考虑中间件的安装,避免了许多版本依赖性和配置问题。 Oracle Package支持 ——Oracle数据库中的多数PL/SQL代码被编程为程序包。Direct Oracle Access提供了一个TOraclePackage组件,您可以方便的调用打包后的程序单元,而无需对这些程序单元和参数做细节说明。 Direct Oracle Access还含有一个Package向导,可以生成类,用以封装程序单元,并记录程序包中定义的类型。最终,将您的Oracle程序包变为Object Pascal或C++语言的自然扩展。 TOracleDataSet ——该数据集组件支持Oracle记录锁定、记录刷新、服务器生成值、自动队列值生成、BLOB压缩。如果主表和从表之间存在外来关键字,或主表含有一个或多个列或属性(网表或varray),那么主从复合关系将自动建立。 TOracleDataSet可以在运行时使用Oracle字典内的信息,在客户端检查服务器约束,并在消息表中读取约束错误消息。能够从字典中获得格式屏蔽、区域值和默认值。这样,您所创建的应用程序将尽可能少的含有编译为可执行文件的数据库知识,还能够动态适应数据库的变化,无需重新编译。 支持Oracle专有特性 ——Direct Oracle Access支持许多Oracle专有特性。除了以上提及的特性之外,还支持Oracle 8和Oracle 8i特性,如LOB定位、对象和参考、XML TYPE、时间戳、滚动查询、密码到期、外部程序开发以及MTS Oracle服务等。 主要功能: 按范例查询模式 ——TOracleDataSet组件含有一个按范例查询模式,无需额外编程,也无需添加其他组件或控件,就能为您的程序提供QBE窗体。由于是在Oracle服务器上执行QBE查询,因此性能最优而且流量最低。用户能够提供简单的查询值,如JONES或100;能够包含字符串值通配符,如JON%;还包含比较操作符,如>, <, NOT, BETWEEN, IN等。 Oracle监控器 ——该组件能够监控您Direct Oracle Access程序的数据库访问行为。可以显示每个行为的SQL、变量、时间戳、逝去时间、网络统计表、数据库统计表和查询执行计划。这对于查找性能瓶颈非常有用,能够调整程序性能,解决程序错误。 警告和管道事件 ——Oracle Server为每个事件处理提供dbms_alert和dbms_pipe包。Direct Oracle Access中的TOracleEvent可以作为这些事件的接收器。TOracleEvent工作在您程序的后台线程中,可以向类似对象事件传播数据库事件。这些事件的发生可以同步或异步于您程序的主线程。 SQL脚本 ——如果需要执行多条数据定义语言(DDL)语句,例如运行您程序的数据库安装部分,就可以使用TOracleScript组件。该组件含有一个专有编辑器,可以开发脚本和单个命令。可扩展的脚本语言遵循基本的SQL*Plus语法,并支持所有SQL语句。除此,该语言还支持变量置换,从而令您的脚本可定制。 高级队列 ——TOracleQueue组件可以重发利用Oracle8的高级队列选项。该组件封装了DBMS_AQ包的基本功能。它提供了便利操作,能够将消息加入队列或者将其从队列中提取出来。消息提取操作是在您程序的后台线程中完成的,而线程模式中生成的事件可以同步或异步于您程序的主线程。 会话池 ——在服务器程序中,需要经常创建会话以处理来自客户端程序的请求,这对于连接池的使用非常有帮助。如果没有池的概念,那么每次请求都将引起数据库登录和离开行为。使用TOracleSessionPool组件后,您可以维护一个数据库会话池,能够被不同请求使用或重复使用。您可以定义池中会话的最大和最小数目,定义池中idle会话的TimeOut行为,并可以预先设置用户名、密码和数据库
2008-12-04 22:13 3,118 Builder中使用Access数据库.txt 2009-01-09 23:36 131,577 builder组件继承关系.pdf 2009-07-31 02:52 5,311 Builder聊天.txt 2009-07-31 02:49 1,863 BUilder高效率代码.txt 2009-07-31 02:36 11,941 C++ Builder VCL库函数简介.txt 2008-12-28 21:37 879 DistanceInEarth.txt 2008-12-28 20:13 1,823 earth.txt 2009-07-31 14:47 94 Edit格式化输入.txt 2009-06-29 13:05 774 Font.txt 2009-07-29 12:37 774 FontStyle.txt 2009-06-28 10:21 96 Google代理.txt 2009-09-05 14:39 135 Release版_脱离变异环境运行程序.txt 2009-01-09 19:52 1,076 下载google卫片链接.txt 2009-07-31 00:12 4,761 不规则窗体.txt 2009-01-09 22:45 4,689 中英文输入法的自动切换.txt 2009-07-07 23:15 97 代理.txt 2008-12-12 00:54 1,402 任意角度图片旋转.txt 2009-06-24 23:42 1,596 使用GDI+绘制旋转的图形及图片.txt 2009-07-02 09:22 5,000 创建快捷方式Builder.txt 2009-07-02 01:37 9,018 双击打开文件.txt 2009-07-31 10:51 352 图像中心扩散.txt 2008-12-06 12:25 126 图像抖动如何解决.txt 2009-01-09 22:34 938 在桌面上画图.txt 2009-06-29 01:05 1,158 多语言支持——修改caption.txt 2008-12-04 13:35 192 实现全屏.txt 2008-12-07 21:31 1,615 怎样旋转一个TBitmap图片.txt 2009-07-30 23:27 55 改扩展名.txt 2009-07-30 23:34 2,230 文件夹遍历.txt 2008-12-08 23:50 9,043 文件的存取.txt 2009-09-11 01:09 37 新建 文本文档.bat 2009-07-31 01:27 2,362 模拟键盘输入.txt 2008-12-04 22:56 2,455 用C连接数据库.txt 2009-01-09 23:43 16 程序暂停.txt 2009-01-09 19:42 157 调用IE打开网站.txt 2009-01-06 11:31 762,901 麦卡托投影法 .mht

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧