明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2342|回复: 2

斑竹,我问了好多问题,天天到这里期望有个回应,可是都落空,如今我又有一些问题:

[复制链接]
发表于 2004-3-30 08:54:00 | 显示全部楼层 |阅读模式
斑竹,我问了好多问题,天天到这里期望有个回应,可是都落空,如今我又有一些问题:


1         怎样和Oracle数据库连接


2 怎样建立自己的oracle数据库


        斑竹,你可以介绍一些有关这方面的书籍吗?
发表于 2004-3-30 10:07:00 | 显示全部楼层
这是与AutoCAD无关的问题.你直接去其他编程网看就是了.很容易找到的.在微软的网上也有.
发表于 2004-3-30 12:30:00 | 显示全部楼层

To sophie_wzh:关系型数据库服务器Oracle和SQL Server

确实,我早看到了你的帖子,但你的问题提得太大,回复起来,给我的感觉象是老虎吃天,无从下口。我不知道你对MFC的ODBC数据库API熟悉程度,若要从头开始讲解,即使你很熟悉C++编程,ODBC API也可以写满整整一本书。我本来准备为你用ObjectARX编写一个完整的(当然是仅具有简单功能的)与AutoCAD相关的数据库应用程序例子,这需要比较长的时间。既然你急于获取有关信息,我只有停止例程的编写。以下我将这个例程的思路大致叙述一下,同时简单回答你的问题。首先,MFC并未封装ADO数据库接口,置顶帖子中有关于ADO编程的例子,修改其中的连接字符串(ConnectionString)就可以与通过ODBC建立与Oracle数据库的连接。我认为你想要使用MFC封装的ODBC API接口。这样,首先你要准备好ODBC数据源(在“控制面板”中配置ODBC数据源,这个应该不需要多讲吧)。至于ODBC编程,在这也没办法作深入细致的介绍,以下结合一段最简单的代码作个入门介绍:
  1. #include <SQL.h>     //ODBC API编程必须包含的文件
  2. #include <SQLEXT.h>void odbcSample()
  3. {
  4.   RETCODE rcd;     //SQL函数返回信息
  5.   HENV henv;               //ODBC环境句柄
  6.   HDBC hdbc;             //ODBC数据连接句柄
  7.   HSTMT hstmt;       //ODBC SQL语句句柄
  8.   char recieve[50];      //该变量存放SQL语句返回数据
  9.   SDWORD sDataLen;       //SQL返回的数据长度
  10.   unsigned char conStr[256];     //SQL语句输出字符串  CString YourDSN;     //数据源名称
  11.   CString YourSQL;     //要使用的SQL语句    rcd = ::SQLAllocEnv(&henv);   //第一步,分配数据环境句柄
  12.   if(rcd == SQL_SUCCESS)
  13.     if(::SQLAllocConnect(henv,&hdbc) == SQL_SUCCESS)   //2、分配ODBC连接句柄
  14.       if(::SQLDriverConnect(hdbc,0,(unsigned char*)YourDSN,
  15.         SQL_NTS,conStr,256,NULL,SQL_DRIVE_NOPROMPT) == SQL_SUCCESS)//3、建立ODBC连接
  16.         if(::SQLAllocStmt(hdbc,&hstmt) == SQL_SUCCESS)//4、分配SQL语句句柄
  17.           if(::SQLExecDirect(hstmt,(unsigned char *)
  18.             YourSQL,SQL_NTS)   //5、执行SQL命令
  19.             for(rcd=::SQLFetch(hstmt);rcd==SQL_SUCCESS;rcd=::SQLFetch(hstmt))//6、使用循环,获取SQL语句执行结果
  20.             {
  21.               ::SQLGetData(hstmt,1,SQL_C_CHAR,recieve,50,&sDataLen);//7、保存SQL返回结果
  22.             }
  23.   ::SQLFreeStmt(hstmt);   //以下释放SQL资源
  24.   ::SQLDisconnect(hdbc);
  25.   ::SQLFreeConnect(hdbc);
  26.   ::SQLFreeEnv(henv);
  27. }
复制代码
通过设计复杂的SQL语句,可以完成建立数据表,查询、编辑数据等功能,当然要实现更为复杂的功能,可能还需要利用CDatabase和CRecordset等对象。以上是ODBC API编程方法,由于它不支持非关系型数据库和面向对象技术,通常不建议在新的主流代码中使用,好的数据库应用程序尽量使用OLE DB技术。OLE DB是建立在ODBC之上,又扩展了ODBC的功能的OLE编程接口,它与ODBC编程有很大的区别,OLE DB广泛地使用COM和COM接口。掌握C++的数据库访问技术后,在AutoCAD ObjectARX编程中,可以使用ASE(AutoCAD SQL Extended)数据交换技术在DWG图形文件中方便地完成与数据库之间的数据交换。关于在ARX中使用OLE DB数据库编程技术和ASE数据交换技术,由于内容太多,希望以后有时间另外写文章介绍。最后,如何用C++代码建立新的空白Oracle或SQL Server数据库,我没有做过(每次都是手工建立数据库,然后用代码进行数据库操作),不敢妄言。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-23 15:01 , Processed in 0.173153 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表