sophie_wzh 发表于 2004-3-30 08:54:00

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

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


1       怎样和Oracle数据库连接


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


        斑竹,你可以介绍一些有关这方面的书籍吗?

goldenshin 发表于 2004-3-30 10:07:00

这是与AutoCAD无关的问题.你直接去其他编程网看就是了.很容易找到的.在微软的网上也有.

leeyeafu 发表于 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编程,在这也没办法作深入细致的介绍,以下结合一段最简单的代码作个入门介绍:#include <SQL.h>   //ODBC API编程必须包含的文件
#include <SQLEXT.h>void odbcSample()
{
RETCODE rcd;   //SQL函数返回信息
HENV henv;               //ODBC环境句柄
HDBC hdbc;             //ODBC数据连接句柄
HSTMT hstmt;       //ODBC SQL语句句柄
char recieve;      //该变量存放SQL语句返回数据
SDWORD sDataLen;       //SQL返回的数据长度
unsigned char conStr;   //SQL语句输出字符串CString YourDSN;   //数据源名称
CString YourSQL;   //要使用的SQL语句    rcd = ::SQLAllocEnv(&henv);   //第一步,分配数据环境句柄
if(rcd == SQL_SUCCESS)
    if(::SQLAllocConnect(henv,&hdbc) == SQL_SUCCESS)   //2、分配ODBC连接句柄
      if(::SQLDriverConnect(hdbc,0,(unsigned char*)YourDSN,
      SQL_NTS,conStr,256,NULL,SQL_DRIVE_NOPROMPT) == SQL_SUCCESS)//3、建立ODBC连接
      if(::SQLAllocStmt(hdbc,&hstmt) == SQL_SUCCESS)//4、分配SQL语句句柄
          if(::SQLExecDirect(hstmt,(unsigned char *)
            YourSQL,SQL_NTS)   //5、执行SQL命令
            for(rcd=::SQLFetch(hstmt);rcd==SQL_SUCCESS;rcd=::SQLFetch(hstmt))//6、使用循环,获取SQL语句执行结果
            {
            ::SQLGetData(hstmt,1,SQL_C_CHAR,recieve,50,&sDataLen);//7、保存SQL返回结果
            }
::SQLFreeStmt(hstmt);   //以下释放SQL资源
::SQLDisconnect(hdbc);
::SQLFreeConnect(hdbc);
::SQLFreeEnv(henv);
}通过设计复杂的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数据库,我没有做过(每次都是手工建立数据库,然后用代码进行数据库操作),不敢妄言。
页: [1]
查看完整版本: 斑竹,我问了好多问题,天天到这里期望有个回应,可是都落空,如今我又有一些问题: