C语言连接达梦数据库

使用C语言在Windows使用ODBC连接达梦数据库

要求:在Windows上配置好ODBC

编译工具:devc++

在dev工具中找到工具à编译选项à编译器

在框中填写-lodbc32

 

#include <stdio.h>

#include <windows.h>

#include <sql.h>

#include <sqltypes.h>

#include <sqlext.h>

 

/* 检测返回代码是否为成功标志,当为成功标志返回 TRUE,否则返回 FALSE */

#define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO)

/* 检测返回代码是否为失败标志,当为失败标志返回 TRUE,否则返回 FALSE */

#define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))

 

HENV henv;/* 环境句柄 */

HDBC hdbc;/* 连接句柄 */

HSTMT hsmt;/* 语句句柄 */

SQLRETURN sret; /* 返回代码 */

 

int main(void)

{

/* 申请一个环境句柄 */

SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);

/* 设置环境句柄的 ODBC 版本 */

SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3,

SQL_IS_INTEGER);

/* 申请一个连接句柄 */

SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

 

sret = SQLConnect(hdbc, (SQLCHAR *)"DM8_ODBC", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS);

if (RC_NOTSUCCESSFUL(sret)) {

/* 连接数据源失败! */

printf("odbc: fail to connect to server!\n");

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

exit(0);

}

printf("odbc: connect to server success!\n");

    SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hsmt);

//    插入数据

    sret = SQLExecDirect(hsmt, (SQLCHAR *) "insert into SYSDBA.T1 VALUES(1,'A','K','G');", SQL_NTS);

if (RC_NOTSUCCESSFUL(sret)) {

printf("odbc: insert fail\n");

}

else

    printf("odbc: insert success\n");

 

/* 断开与数据源之间的连接 */

SQLDisconnect(hdbc);

/* 释放连接句柄 */

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

/* 释放环境句柄 */

SQLFreeHandle(SQL_HANDLE_ENV, henv);

return 0;

}

 

posted @ 2021-05-13 16:06  莫得感情的肝帝  阅读(1156)  评论(0编辑  收藏  举报