CB中如何使用ADO原生接口开发数据库程序?

mopyman 2004-05-06 11:31:32
CB中如何使用ADO原生接口开发数据库程序?
就是用ADO的原生COM接口,不用ole方式.
...全文
46 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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啊?
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ Builder
加入

1.3w+

社区成员

C++ Builder相关内容讨论区
申请成为版主
帖子事件
创建了帖子
2004-05-06 11:31
社区公告
暂无公告