Chinaunix首页 | 论坛 | 博客
  • 博客访问: 212977
  • 博文数量: 70
  • 博客积分: 2050
  • 博客等级: 大尉
  • 技术积分: 700
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-15 21:42
文章分类

全部博文(70)

文章存档

2013年(1)

2011年(5)

2010年(3)

2009年(9)

2008年(17)

2007年(6)

2006年(29)

我的朋友

分类: C/C++

2006-07-18 18:42:39

#include 
#include 
#include 
#include 
#include 

#define CheckResult(t, h, n)    ODBCCheck(t, h, n, #n, __LINE__)

void
ODBCCheck(SQLSMALLINT typeSQLHANDLE handleSQLRETURN rcchar *promptint line)
{
    SQLCHAR state[6], msg[1024];
    SQLINTEGER native;
    SQLSMALLINT ilength;

    if (rc != SQL_SUCCESS)
    {
        for (i = 1SQLGetDiagRec(typehandleistate, &nativemsgsizeof(msg), &length) != SQL_NO_DATA; ++i)
        {
            printf("%02d: %s: %.*s\n"linepromptlengthmsg);
        }
        if (rc != SQL_SUCCESS_WITH_INFO)
        {
                printf("press any key to continue ...\n");
            _getch();
            exit(0);
        }
    }
}

int
main(int argcchar *argv[])
{
    SQLHANDLE hEnvhDBChStmt;
    time_t t;
    char b[1024];

    // CREATE TABLE mmx (name CHAR(10), address CHAR(40))
    time(&t);
    strftime(bsizeof(b), "INSERT INTO mmx VALUES ('%Y-%m-%d','%H:%M:%S')"localtime(&t));

    CheckResult(SQL_HANDLE_ENVhEnvSQLAllocHandle(SQL_HANDLE_ENVNULL, &hEnv));
    CheckResult(SQL_HANDLE_ENVhEnvSQLSetEnvAttr(hEnvSQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3SQL_IS_INTEGER));
    CheckResult(SQL_HANDLE_ENVhEnvSQLAllocHandle(SQL_HANDLE_DBChEnv, &hDBC));
    CheckResult(SQL_HANDLE_DBChDBCSQLConnect(hDBC, (SQLCHAR*)"dsn-name"SQL_NTS, (SQLCHAR*)"user"SQL_NTS, (SQLCHAR*)"password"SQL_NTS));
    CheckResult(SQL_HANDLE_DBChDBCSQLAllocHandle(SQL_HANDLE_STMThDBC, &hStmt));
    CheckResult(SQL_HANDLE_STMThStmtSQLExecDirect(hStmtbSQL_NTS));
    CheckResult(SQL_HANDLE_STMThStmtSQLExecDirect(hStmt"SELECT * FROM mmx"SQL_NTS));
    while (SQLFetch(hStmt) != SQL_NO_DATA)
    {
        SQLCHAR buffer[1024];
        SQLINTEGER length;
        CheckResult(SQL_HANDLE_STMThStmtSQLGetData(hStmt1SQL_C_CHARbuffersizeof(buffer), &length));
        printf("'%.*s'"lengthbuffer);
        CheckResult(SQL_HANDLE_STMThStmtSQLGetData(hStmt2SQL_C_CHARbuffersizeof(buffer), &length));
        printf(" '%.*s'\n"lengthbuffer);
    }
    printf("press any key to continue ...\n");
    _getch();
    return 0;
}
文件: odbc.rar
大小: 1KB
下载: 下载

阅读(790) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~