社区
C++ Builder
帖子详情
CB中如何使用ADO原生接口开发数据库程序?
mopyman
2004-05-06 11:31:32
CB中如何使用ADO原生接口开发数据库程序?
就是用ADO的原生COM接口,不用ole方式.
...全文
67
11
打赏
收藏
CB中如何使用ADO原生接口开发数据库程序?
CB中如何使用ADO原生接口开发数据库程序? 就是用ADO的原生COM接口,不用ole方式.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yunuo2010000
2004-05-09
打赏
举报
回复
学习
fxly
2004-05-07
打赏
举报
回复
不懂,帮你顶!
真如实观
2004-05-07
打赏
举报
回复
http://expert.csdn.net/Expert/topic/2678/2678934.xml?temp=.3973352
希望大家喜欢。
CityHost
2004-05-07
打赏
举报
回复
OLE==COM????
叶子哟
2004-05-07
打赏
举报
回复
它的接口较多,你可以参照msdn和相关资料根据自己的需要来做,没什么!
可以上vc版那边查查资料,非常的多
Persistent8813
2004-05-07
打赏
举报
回复
DElphi中是这样写的
rs : ADOInt.Recordset;
rs := ADODATASET1.Recordset;
在BCB中是这样写
Recordset *rs;
rs = ADODataSet1->Recordset;
BCB中好象不用写ADOInt吧
叶子哟
2004-05-07
打赏
举报
回复
昨天有人在数据库版问过了!
你先导入类型库,将头文件加入到你的项目中,然后就可以用了
在csdn的文档库中有许多这个的文章,你可以搜一下vc版,bcb版也有
我这儿有一套vc的库,你需要,可以给我发e-mail!
主要就是接口,智能指针的操作,如:
以下为类的一部分,你参考一下,是vc的:
CAdoConnection::CAdoConnection()
{
//创建 Connection 对象---------------------------
m_pConnection.CreateInstance("ADODB.Connection");
#ifdef _DEBUG
if (m_pConnection == NULL)
{
AfxMessageBox("Connection 对象创建失败! 请确认是否初始化了COM环境\r\n");
}
#endif
ASSERT(m_pConnection != NULL);
}
CAdoConnection::~CAdoConnection()
{
if (m_pConnection != NULL)
{
Release();
}
}
/*========================================================================
Name: 连接到数据源.
-----------------------------------------------------
Params: [lpszConnect]: 连接字符串, 包含连接信息.
[lOptions]: 可选. 决定该方法是以同步还是异步的方式连接数据
源. 可以是如下某个常量:
[常量] [说明]
----------------------------------
adConnectUnspecified (默认)同步方式打开连接.
adAsyncConnect 异步方式打开连接. Ado用 ConnectComplete 事
件来通知已经完成连接.
==========================================================================*/
BOOL CAdoConnection::Open(LPCTSTR lpszConnect, long lOptions)
{
ASSERT(m_pConnection != NULL);
ASSERT(AfxIsValidString(lpszConnect));
if (strcmp(lpszConnect, _T("")) != 0)
{
m_strConnect = lpszConnect;
}
if (m_strConnect.IsEmpty())
{
ASSERT(FALSE);
return FALSE;
}
if (IsOpen()) Close();
try
{
// 连接数据库 ---------------------------------------------
return (m_pConnection->Open(_bstr_t(LPCTSTR(m_strConnect)), "", "", lOptions) == S_OK);
}
catch (_com_error e)
{
TRACE(_T("Warning: 连接数据库发生异常. 错误信息: %s; 文件: %s; 行: %d\n"), e.ErrorMessage(), __FILE__, __LINE__);
TRACE(_T("%s\r\n"), GetLastErrorText());
return FALSE;
}
catch (...)
{
TRACE(_T("Warning: 连接数据库时发生未知错误:"));
}
return FALSE;
}
/*========================================================================
Name: 连接 SQL SERVER 数据库.
-----------------------------------------------------
Params: [dbsrc]: SQL SERVER 服务器名.
[dbname]: 默认的数据库名.
[user]: 用户名.
[pass]: 密码.
==========================================================================*/
BOOL CAdoConnection::ConnectSQLServer(CString dbsrc, CString dbname, CString user, CString pass, long lOptions)
{
CString strConnect = _T("Provider=SQLOLEDB.1; Data Source=") + dbsrc +
_T("; Initial Catalog=") + dbname +
_T("; User ID=") + user +
_T("; PWD=") + pass;
return Open(LPCTSTR(strConnect), lOptions);
}
/*========================================================================
真如实观
2004-05-07
打赏
举报
回复
好处是自由,你想怎么控制就怎么控制,下面是我用写VC的片段:
void CUltrasonicBRSApp::CreateTables()
{
CString strPathFileName=GetDBPath();
strConnection = _T("");
strConnection = "Provider=Microsoft.JET.OLEDB.4.0;Data source = "+strPathFileName+";Jet OLEDB:Engine Type=5;";
if(0xFFFFFFFF==GetFileAttributes(strPathFileName)) //判断数据库文件是否存在。
{
CADOXCatalog pxcat;
//数据表对象
CADOXTable pxTableUser(&pxcat),pxTableCostType (&pxcat),pxTableInstr(&pxcat;
////索引对象定义
CADOXIndex pxIndUser,pxIndCostType,pxIndInstr;
pxcat.CreateDatabase(strConnection); //创建数据库。
//用户表
pxTableUser.Create("UserData"); //创建表
pxTableUser.AddField("用户ID", CADOXTable::typeInteger, 0);
pxTableUser.AddField("用户名", CADOXTable::typeWChar, 18);
pxTableUser.AddField("性别", CADOXTable::typeWChar, 5);
pxTableUser.AddField("密码", CADOXTable::typeWChar, 18);
pxTableUser.AddField("权限", CADOXTable::typeUnsignedTinyInt, 0);
CADOXField f( &pxTableUser, "性别" );
f.AllowZeroLength();
pxcat.AddTable(pxTableUser); //将表对象添加到数据库中
//收费项目表
pxTableCostType.Create("CostType");
pxTableCostType.AddField("编号",CADOXTable::typeInteger,0);
pxTableCostType.AddField("金额",CADOXTable::typeCurrency,0);
pxcat.AddTable(pxTableCostType);
//仪器型号表
pxTableInstr.Create("InstrModel");
pxTableInstr.AddField("编号" , CADOXTable::typeInteger,0);
pxTableInstr.AddField("型号" , CADOXTable::typeWChar, 18);
pxcat.AddTable(pxTableInstr);
//定义数据表索引
//用户表索引
pxIndUser.Create("UserIndex");
pxIndUser.AddField("用户ID", CADOXIndex::typeInteger, 0);
pxIndUser.SetPrimaryKey(true);
pxTableUser.AddIndex(pxIndUser); //将索引添加到表对象中
//收费项目索引
pxIndCostType.Create("CostIndex");
pxIndCostType.AddField("编号", CADOXIndex::typeInteger, 0);
pxIndCostType.SetPrimaryKey(true);
pxTableCostType.AddIndex(pxIndCostType);
//仪器型号索引
pxIndInstr.Create("InstrIndex");
pxIndInstr.AddField("编号", CADOXIndex::typeInteger, 0);
pxIndInstr.SetPrimaryKey(true);
pxTableInstr.AddIndex(pxIndInstr);
}
}
叶子哟
2004-05-07
打赏
举报
回复
楼上的楼上,就是com呀,不需要你去做,只要用就行了,了解ado的接口就行了!
weill
2004-05-07
打赏
举报
回复
汉!BCB都因.net计划开始走向消亡了,还搞这样天书似的东东干嘛?
有什么特别的好处吗?
BCB其特点就是快速开发,如果对数据库的操作都要玩这样的花样,是不是太不值得了?
mopyman
2004-05-07
打赏
举报
回复
操纵原生ADO对象是不是需要懂COM啊?
一点心得:在 Delphi
中
使用
原生
ADO
控制
数据库
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3047846我发现很多朋友在
开发
数据库
时都
使用
Delphi 自带的
ADO
组件 或 Diamond
ADO
,其实在 Delphi
中
使用
原生
ADO
接口
也是十分方便和有效的。我
使用
原生
ADO
开发
项目已有很长一段时间,也回答过一些朋友类似的问题,现在把自己的一点心得与大家分享,班门弄斧,
Delphi
中
的几种
数据库
引擎
Delphi
中
经常出现的词汇是
ADO
,BDE,dbExpress等等,那么他们之间到底有什么异同呢,Delphi
中
的
数据库
引擎又到底有多少种呢?也许应该从整体上把握一下,才能有的放矢. Delphi一共提供四种数据
程序
的设计标准,分别是Borland Database Engine(BDE),ActiveX Data Object(
ADO
),dbExpress,InterBase Express....
VB速查大全(
数据库
、表格及报表编程) ★ VB错误处理,
ado
常见错误,VB数据类型等,网上有很多教程是错的,强烈建议看此文
VB异常处理 (很重要)
ado
常见错误
ado
游标及锁定介绍 免费报表控件 免费表格控件 vb数据类型(很多
程序
出问题出在这个,一定要看,VB msdn说的不太对) VB可用的AES加密sqlite_odbc 及 cairo_sqlite (VBRichClient自带的非odbc连接) 有vbRichClient代替winsock、实现vb多线程及远程调用activeX等
SSM框架
SSM框架 MyBatis MyBatis简介 什么是MyBatis 一款持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以
使用
简单的 XML 或注解来配置和映射
原生
信息,将
接口
和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成
数据库
中
的记录。 可以通过Maven仓库获得MyBatis 持久化 持久化是将
程序
数据在持久状态和瞬时状态间转换的机制。 即把数据(如内存
中
的对象)保存到可永久
c# Winform
中
使用
NHibernate的配置
NHibernate知识要点记录1、NHibernate的引用1.1 关于NHibernate学习可以参考的几个网址1.2 在winform项目
中
引用NHibername2、NHibernate的项目配置2.1 在app.config(或web.config)
中
配置NHibernate的
数据库
连接信息2.2 获取单例模式的ISessionFactory2.3 单例工厂模式的NHibernateHelper类3、持久化类及映射文件配置3.1、持久化类及映射文件的配置 1、NHibernate的引用 1.1 关
C++ Builder
13,871
社区成员
102,694
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章