刘总的笔记小站

生活常识,娱乐搞笑,编程技巧,智能家居,深度学习,网络神经,数据挖掘

unixodbc example

//#include<windows.h>

//  gcc sqls.cpp -L/usr/lib/arm-linux-gnueabihf -lodbc

#include <stdio.h>

#define UNICODE

#include<sqlext.h>

#define NAME_LEN 50
#define PHONE_LEN 20

void show_error() {
    printf("error\n");
}

int main(int argc, char *argv[]) {
    SQLHENV henv;
    SQLHDBC hdbc;
    SQLHSTMT hstmt = 0;
    SQLRETURN retcode;
    SQLWCHAR szName[NAME_LEN], szPhone[PHONE_LEN], sCustID[NAME_LEN];
    SQLLEN cbName = 0, cbCustID = 0, cbPhone = 0;
    //Allocate environment handle
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    //Set the ODBC version environment attribute
    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
        retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0);
        //Allocate connection handle
        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
            retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
            //Set login timeout to 5 seconds
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER) 5, 0);
                //Connect to data source
                retcode = SQLConnect(hdbc, (SQLWCHAR *) "mysql", SQL_NTS, (SQLWCHAR *) NULL, 0, NULL, 0);
                //Allocate statement handle
                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                    retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
                    retcode = SQLExecDirect(hstmt, (SQLWCHAR *) "SELECT Host,User,Password FROM mysql.user", SQL_NTS);
                    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                        //Bind columns 1,2,and 3
                        retcode = SQLBindCol(hstmt, 1, SQL_C_CHAR, &sCustID, 100, &cbCustID);
                        retcode = SQLBindCol(hstmt, 2, SQL_C_CHAR, szName, NAME_LEN, &cbName);
                        retcode = SQLBindCol(hstmt, 3, SQL_C_CHAR, szPhone, PHONE_LEN, &cbPhone);
                        // Fetch and print each row of data.On an error,display a message and exit.
                        for (int i = 0;; i++) {
                            retcode = SQLFetch(hstmt);
                            if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
                                show_error();
                            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                                printf("%d:%S %S %S\n", i + 1, sCustID, szName, szPhone);
                            else
                                break;
                        }
                    }
                    //Process data
                    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                        SQLCancel(hstmt);
                        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
                    }
                    SQLDisconnect(hdbc);
                }
                SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
            }
        }
        SQLFreeHandle(SQL_HANDLE_ENV, henv);
    }
}


///////////

//////////

/////////

//#include<windows.h>

#include <stdio.h>

#define UNICODE

#include<sqlext.h>

#define NAME_LEN 50
#define PHONE_LEN 20

void show_error() {
    printf("error\n");
}

int main(int argc, char *argv[]) {
    SQLHENV henv;
    SQLHDBC hdbc;
    SQLHSTMT hstmt = 0;
    SQLRETURN retcode;
    SQLWCHAR szName[NAME_LEN], szPhone[PHONE_LEN], sCustID[NAME_LEN];
    SQLLEN cbName = 0, cbCustID = 0, cbPhone = 0;
    //Allocate environment handle
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
    if ( retcode != SQL_SUCCESS ){
        printf("SQLAllocHandle SQL_HANDLE_ENV fail \n");
        return 1;
    }
    //Set the ODBC version environment attribute
    retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0);
    if ( retcode != SQL_SUCCESS ){
        printf("SQLSetEnvAttr SQL_ATTR_ODBC_VERSION fail \n");
        return 1;
    }

    //Allocate connection handle
    retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
    if ( retcode != SQL_SUCCESS ){
        printf("SQLAllocHandle SQL_HANDLE_DBC fail \n");
        return 1;
    }

    //Set login timeout to 5 seconds
    SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER) 5, 0);
    if ( retcode != SQL_SUCCESS ){
        printf("SQLSetConnectAttr SQL_LOGIN_TIMEOUT fail \n");
        return 1;
    }

    //Connect to data source
    retcode = SQLConnect(hdbc, (SQLWCHAR *)"mysql", SQL_NTS, (SQLWCHAR *) NULL, 0, NULL, 0);
    if ( retcode != SQL_SUCCESS ){
        printf("SQLSetConnectAttr SQL_LOGIN_TIMEOUT fail \n");
        return 1;
    }

                //Allocate statement handle
                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                    retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
                    retcode = SQLExecDirect(hstmt, (SQLWCHAR *)"SELECT Host,User,Password FROM mysql.user", SQL_NTS);
                    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                        //Bind columns 1,2,and 3
                        retcode = SQLBindCol(hstmt, 1, SQL_C_CHAR, &sCustID, 100, &cbCustID);
                        retcode = SQLBindCol(hstmt, 2, SQL_C_CHAR, szName, NAME_LEN, &cbName);
                        retcode = SQLBindCol(hstmt, 3, SQL_C_CHAR, szPhone, PHONE_LEN, &cbPhone);
                        // Fetch and print each row of data.On an error,display a message and exit.
                        for (int i = 0;; i++) {
                            retcode = SQLFetch(hstmt);
                            if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)
                                show_error();
                            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
                                printf("%d:%S %S %S\n", i + 1, sCustID, szName, szPhone);
                            else
                                break;
                        }
                    }
                    //Process data
                    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                        SQLCancel(hstmt);
                        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
                    }
                    SQLDisconnect(hdbc);
                }
                SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
            }
        }
        SQLFreeHandle(SQL_HANDLE_ENV, henv);
    }
}






发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
搜索
«   2024年9月   »
1
2345678
9101112131415
16171819202122
23242526272829
30
网站分类
最新留言
文章归档
网站收藏
友情链接
图标汇集
Powered by Z-BlogPHP

  • Copyright ©2021 @liuzong All rights reserved.
  • 陕ICP备17016542号