//#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); } }