This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dev:odbc:examples:simpleselect [2009/12/06 03:26] tdo |
dev:odbc:examples:simpleselect [2016/06/28 22:38] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
{{page>:top_add&nofooter&noeditbtn}} | {{page>:top_add&nofooter&noeditbtn}} | ||
<html><div align="center"><span style="color:red">DRAFT</span></div></html> | <html><div align="center"><span style="color:red">DRAFT</span></div></html> | ||
- | ====== ODBC Simple SELECT ====== | + | ====== C++ Omnidex ODBC Simple Connection/SELECT ====== |
- | * SQLConnect can only use System and Machine datasources | + | ^ [[dev:home | Dev ]] ^ [[dev:odbc:examples:simpleselect | C++ ]] ^ [[dev:odbc:examples:csharp_simple_select |C# ]] ^ [[dev:jdbc:examples:simpleselect | Java ]] ^ [[dev:odbc:examples:php_select | PHP ]] ^ |
+ | ===== Quick Notes ===== | ||
+ | |||
+ | * SQLConnect can only use System and Machine datasources so use SQLDriverConnect. | ||
* SQLDriverConnect can use a Omnidex File DSN with the FILEDSN= prefix. | * SQLDriverConnect can use a Omnidex File DSN with the FILEDSN= prefix. | ||
* Make sure odxodbc.dll is in the c:\Windows\system32 directory | * Make sure odxodbc.dll is in the c:\Windows\system32 directory | ||
* Make sure an OdxNet process is running | * Make sure an OdxNet process is running | ||
+ | |||
+ | ===== C++ Sample Code ===== | ||
+ | You can cut and paste this code and modify the the SQLDriverConnection call and the SELECT statement to test on your Omnidex Environment. | ||
<code C++> | <code C++> | ||
Line 22: | Line 28: | ||
SQLHDBC hdbc; | SQLHDBC hdbc; | ||
SQLHSTMT hstmt; | SQLHSTMT hstmt; | ||
- | SQLRETURN retcode; | ||
char errormsg[255] = "x"; | char errormsg[255] = "x"; | ||
SQLCHAR * OutConnStr = (SQLCHAR * )malloc(255); | SQLCHAR * OutConnStr = (SQLCHAR * )malloc(255); | ||
Line 29: | Line 34: | ||
cout << "OdxODBCConnectionTest" << endl; | cout << "OdxODBCConnectionTest" << endl; | ||
// Allocate environment handle | // Allocate environment handle | ||
- | retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); | + | if (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv) != SQL_SUCCESS) |
- | cout << "Alloc ENV retcode:" << retcode << endl; | + | cout << "sQLAllocHandle (ENV) Error" << endl; |
- | retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC2, 0); | + | if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC2, 0) != SQL_SUCCESS) |
- | cout << "Set Env retcode: " << retcode << endl; | + | cout << "SQLSetEnvAttr Error" << endl; |
- | retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); | + | if (SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc) != SQL_SUCCESS) |
- | cout << "Alloc hdbc retcode: " << retcode << endl; | + | cout << "SQLAllocHandle (DBC) Error" << endl; |
- | retcode = SQLDriverConnect(hdbc, NULL, | + | if (SQLDriverConnect(hdbc, NULL, |
(SQLCHAR*) "FILEDSN=c:\\dev\\odx\\tiny\\tiny.dsn", SQL_NTS, | (SQLCHAR*) "FILEDSN=c:\\dev\\odx\\tiny\\tiny.dsn", SQL_NTS, | ||
- | (SQLCHAR*) NULL, 0, NULL, 0); | + | (SQLCHAR*) NULL, 0, NULL, 0) != SQL_SUCCESS) |
- | cout << "Connect retcode:" << retcode << endl; | + | { |
- | if (retcode != SQL_SUCCESS) | + | cout << "SQLDriverConnect Error:" << endl; |
- | { | + | // If we get to here, display the SQLError message text to see what’s going on. |
- | retcode = SQLError(henv, hdbc, NULL, NULL , NULL, (SQLCHAR*) errormsg, sizeof(errormsg), NULL); | + | SQLError(henv, hdbc, NULL, NULL , NULL, (SQLCHAR*) errormsg, sizeof(errormsg), NULL); |
- | cout << errormsg << endl; | + | cout << errormsg << endl; |
} | } | ||
- | retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); | + | if (SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt) != SQL_SUCCESS) |
- | cout << "Alloc stmt:" << retcode << endl; | + | cout << "SQLAllocHandle (STMT) Error" << endl; |
- | retcode = SQLExecDirect(hstmt, (SQLCHAR*) "select mytext from table1 where mytext='bears'", SQL_NTS); | + | if (SQLExecDirect(hstmt, |
- | cout << "Exec Direct retcode:" << retcode << endl; | + | (SQLCHAR*) "select mytext from table1 where mytext='bears'", SQL_NTS) != SQL_SUCCESS) |
- | SQLCHAR mytext[60]; | + | cout << "ExecDirect Error" << endl; |
- | retcode = SQLBindCol(hstmt, 1, SQL_C_CHAR, (SQLPOINTER) &mytext, | + | SQLCHAR mytext[60]; // Declare varable for the Bind. |
- | sizeof(mytext), NULL); | + | if (SQLBindCol(hstmt, 1, SQL_C_CHAR, (SQLPOINTER) &mytext, |
- | while (retcode==0) | + | sizeof(mytext), NULL) != SQL_SUCCESS) |
- | { | + | cout << "SQLBindCol Error" << endl; |
- | retcode = SQLFetch(hstmt); | + | while (SQLFetch(hstmt) == SQL_SUCCESS) |
- | if (retcode == 0) | + | |
cout << mytext << endl; | cout << mytext << endl; | ||
- | } | ||
SQLFreeHandle(SQL_HANDLE_STMT, hstmt); | SQLFreeHandle(SQL_HANDLE_STMT, hstmt); | ||
- | retcode = SQLDisconnect(hdbc); | + | if (SQLDisconnect(hdbc) != SQL_SUCCESS) |
+ | cout << "SQLDisconnect Error" << endl; | ||
SQLFreeHandle(SQL_HANDLE_DBC, hdbc); | SQLFreeHandle(SQL_HANDLE_DBC, hdbc); | ||
SQLFreeHandle(SQL_HANDLE_ENV, henv); | SQLFreeHandle(SQL_HANDLE_ENV, henv); | ||
cout << "End of program." << endl; | cout << "End of program." << endl; | ||
} // end main | } // end main | ||
+ | |||
</code> | </code> | ||
{{page>:bottom_add&nofooter&noeditbtn}} | {{page>:bottom_add&nofooter&noeditbtn}} |