⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_utility.h

📁 unix上的ODBC实现
💻 H
字号:
/***************************************************************************                          my_utility.h  -  description                             -------------------    begin                : Fri Nov 2 2001    copyright            : (C) MySQL AB 1995-2002, www.mysql.com    author               : venu ( venu@mysql.com ) ***************************************************************************//*************************************************************************** *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License as published by  * *   the Free Software Foundation; either version 2 of the License, or     * *   (at your option) any later version.                                   * *                                                                         * ***************************************************************************//*************************************************************************** *                                                                         * *        MySQL ODBC 3.51 Driver - samples utility header                  * *                                                                         * ***************************************************************************/#ifndef __TMYODBC_UTILITY_H__#define __TMYODBC_UTILITY_H__#ifdef HAVE_CONFIG_H#include <myconf.h>#endif#ifdef WIN32#include <windows.h>#endif /* STANDARD C HEADERS */#include <stdio.h>#include <stdlib.h>#include <assert.h>/* ODBC HEADERS */#include <sql.h>#include <sqlext.h>#ifndef NULL#define NULL 0#endif#ifndef ushort#define ushort unsigned short#endif#ifndef bool#define bool unsigned char#endif#ifndef true#define true 1#endif#ifndef false#define false 0#endif#define MAX_NAME_LEN 95#define MAX_COLUMNS 255#define MAX_ROW_DATA_LEN 255SQLCHAR *mydsn = "myodbc3";SQLCHAR *myuid = "venu";SQLCHAR *mypwd = "venu";/* PROTOTYPE */void myerror(SQLRETURN rc,SQLSMALLINT htype, SQLHANDLE handle);/* UTILITY MACROS */#define myenv(henv,r)  \        if ( ((r) != SQL_SUCCESS) ) \            myerror(r, 1,henv); \        assert( ((r) == SQL_SUCCESS) || ((r) == SQL_SUCCESS_WITH_INFO) )#define myenv_err(henv,r,rc)  \        if ( rc == SQL_ERROR || rc == SQL_SUCCESS_WITH_INFO ) \            myerror(rc, 1, henv); \        assert( r )#define mycon(hdbc,r)  \        if ( ((r) != SQL_SUCCESS) ) \            myerror(r, 2, hdbc); \        assert( ((r) == SQL_SUCCESS) || ((r) == SQL_SUCCESS_WITH_INFO) )#define mycon_err(hdbc,r,rc)  \        if ( rc == SQL_ERROR || rc == SQL_SUCCESS_WITH_INFO ) \            myerror(rc, 2, hdbc); \        assert( r )#define mystmt(hstmt,r)  \        if ( ((r) != SQL_SUCCESS) ) \            myerror(r, 3, hstmt); \        assert( ((r) == SQL_SUCCESS) || ((r) == SQL_SUCCESS_WITH_INFO) )#define mystmt_err(hstmt,r,rc)  \        if ( rc == SQL_ERROR || rc == SQL_SUCCESS_WITH_INFO ) \            myerror(rc, 3, hstmt); \        assert( r )/********************************************************* MyODBC 3.51 error handler                             **********************************************************/void myerror(SQLRETURN rc, SQLSMALLINT htype, SQLHANDLE handle){  SQLRETURN lrc;  if( rc == SQL_ERROR || rc == SQL_SUCCESS_WITH_INFO )   {    SQLCHAR     szSqlState[6],szErrorMsg[SQL_MAX_MESSAGE_LENGTH];    SQLINTEGER  pfNativeError;    SQLSMALLINT pcbErrorMsg;        lrc = SQLGetDiagRec(htype, handle,1,                            (SQLCHAR *)&szSqlState,                        (SQLINTEGER *)&pfNativeError,                        (SQLCHAR *)&szErrorMsg,                         SQL_MAX_MESSAGE_LENGTH-1,                        (SQLSMALLINT *)&pcbErrorMsg);    if(lrc == SQL_SUCCESS || lrc == SQL_SUCCESS_WITH_INFO)      printf("\n [%s][%d:%s]\n",szSqlState,pfNativeError,szErrorMsg);  }}/********************************************************* MyODBC 3.51 connection handler                        **********************************************************/void myconnect(SQLHENV *henv,SQLHDBC *hdbc, SQLHSTMT *hstmt){  SQLRETURN rc;    printf("\nmyconnect:\n");    rc = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,henv);    myenv(*henv,rc);         rc = SQLSetEnvAttr(*henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,0);    myenv(*henv,rc);       rc = SQLAllocHandle(SQL_HANDLE_DBC,*henv, hdbc);    myenv(*henv,rc);        printf(" connecting to '%s' with user name '%s'...\n",mydsn,myuid);    rc = SQLConnect(*hdbc, mydsn, SQL_NTS, myuid, SQL_NTS,  mypwd, SQL_NTS);    mycon(*hdbc,rc);    rc = SQLSetConnectAttr(*hdbc,SQL_ATTR_AUTOCOMMIT,(SQLPOINTER)SQL_AUTOCOMMIT_ON,0);    mycon(*hdbc,rc);    rc = SQLAllocHandle(SQL_HANDLE_STMT,*hdbc,hstmt);    mycon(*hdbc,rc);    printf(" success!!\n");}/********************************************************* MyODBC 3.51 closes the connection                     **********************************************************/void mydisconnect(SQLHENV *henv,SQLHDBC *hdbc, SQLHSTMT *hstmt){  SQLRETURN rc;  printf("\nmydisconnect:\n");    rc = SQLFreeStmt(*hstmt, SQL_DROP);    mystmt(*hstmt,rc);    rc = SQLDisconnect(*hdbc);    mycon(*hdbc,rc);    rc = SQLFreeConnect(*hdbc);    mycon(*hdbc,rc);    rc = SQLFreeEnv(*henv);    myenv(*henv,rc);    printf(" success!!\n");}#endif /* __TMYODBC_UTILITY_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -