INTELLIGENT WORK FORUMS FOR COMPUTER PROFESSIONALS
Come Join Us!
Are you a Computer / IT professional? Join Tek-Tips now!
- Talk With Other Members
- Be Notified Of Responses
To Your Posts
- Keyword Search
- One-Click Access To Your
Favorite Forums
- Automated Signatures
On Your Posts
- Best Of All, It's Free!
*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.
Partner With Us!
"Best Of Breed" Forums Add Stickiness To Your Site

(Download This Button Today!)
Feedback
"...Just a quick note to say, "THANKS!" for these forums...The site is very well layed out and easy to use. Thanks for bringing us together - we need each other."
Geography
Where in the world do Tek-Tips members come from?
|
Connecting to access database
|
|
For some reason I have all these header file errors but not sure why, here's my code: CODE#include "stdafx.h" #include <sqlext.h> #include <iostream> #include <string>
using namespace std;
char szDSN[256] = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\Users\\Sasuke\\Documents\\Database1.accdb;";
//LPCTSTR lpszConnect = _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\Users\\Sasuke\\Documents\\Database1.accdb;");
//*****************************************************************************************
int main() { /* Data Access Method used in this sample */ const char* DAM = "Direct ODBC";
HENV hEnv; HDBC hDbc;
/* ODBC API return status */ RETCODE rc;
int iConnStrLength2Ptr; char szConnStrOut[256];
//unsigned char* query = "SELECT Customers.[Company], Customers.[First Name] FROM Customers;";
string query = "SELECT Customers.[Company], Customers.[First Name] FROM Customers;";
SQLCHAR chval1[128], chval2[128], colName[128]; int ret1; int ret2;
/* Number of rows and columns in result set */ SQLINTEGER rowCount = 0; SQLSMALLINT fieldCount = 0, currentField = 0; HSTMT hStmt;
/* Allocate an environment handle */ rc = SQLAllocEnv(&hEnv); /* Allocate a connection handle */ rc = SQLAllocConnect(hEnv, &hDbc);
/* Connect to the 'Northwind 2007.accdb' database */ rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)szConnStrOut, 255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT); if (SQL_SUCCEEDED(rc)) { printf("%s: Successfully connected to database. Data source name: \n %s\n", DAM, szConnStrOut);
/* Prepare SQL query */ printf("%s: SQL query:\n %s\n", DAM, query);
rc = SQLAllocStmt(hDbc,&hStmt); rc = SQLPrepare(hStmt, query, SQL_NTS); /* Bind result set columns to the local buffers */ rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, chval1, 128, (SQLINTEGER*)&ret1); rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, chval2, 128, (SQLINTEGER*)&ret2); /* Excecute the query and create a record set */ rc = SQLExecute(hStmt); if (SQL_SUCCEEDED(rc)) { printf("%s: Retrieve schema info for the given result set:\n", DAM); SQLNumResultCols(hStmt, &fieldCount); if (fieldCount > 0) { for (currentField=1; currentField <= fieldCount; currentField++) { SQLDescribeCol(hStmt, currentField, colName, sizeof(colName), 0, 0, 0, 0, 0); printf(" | %s", colName); } printf("\n"); } else { printf("%s: Error: Number of fields in the result set is 0.\n", DAM); }
printf("%s: Fetch the actual data:\n", DAM); /* Loop through the rows in the result set */ rc = SQLFetch(hStmt); while (SQL_SUCCEEDED(rc)) { printf(" | %s | %s\n", chval1, chval2); rc = SQLFetch(hStmt); rowCount++; };
printf("%s: Total Row Count: %d\n", DAM, rowCount); rc = SQLFreeStmt(hStmt, SQL_DROP); } } else { printf("%s: Couldn't connect to %s.\n", DAM, szDSN); }
/* Disconnect and free up allocated handles */ SQLDisconnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
printf("%s: Cleanup. Done.\n", DAM); }
I tried to use the debugger but still could not manage to fix them. Here are some of the errors CODEc:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(137): error C2146: syntax error : missing ';' before identifier 'SQLHWND' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(137): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(137): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(275): error C2146: syntax error : missing ';' before identifier 'Data1' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(275): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(275): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(276): error C2146: syntax error : missing ';' before identifier 'Data2' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(276): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(276): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(277): error C2146: syntax error : missing ';' before identifier 'Data3' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(277): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(277): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(278): error C2146: syntax error : missing ';' before identifier 'Data4' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(278): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sqltypes.h(278): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(606): error C2061: syntax error : identifier '__inout_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(607): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(607): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(711): error C2061: syntax error : identifier '__out_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(712): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(712): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(729): error C2061: syntax error : identifier '__out_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(730): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(730): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(735): error C2061: syntax error : identifier '__out_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(736): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(736): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(747): error C2061: syntax error : identifier '__out_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(748): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(748): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(764): error C2061: syntax error : identifier '__out_xcount' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(765): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(765): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(770): error C2061: syntax error : identifier '__out_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(771): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(771): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(780): error C2061: syntax error : identifier '__out_xcount_opt' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(781): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(781): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(804): error C2061: syntax error : identifier '__in_xcount' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(804): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(804): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(828): error C2061: syntax error : identifier '__in_xcount' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(828): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(828): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(845): error C2061: syntax error : identifier '__in_xcount' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(846): error C2059: syntax error : ')' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(846): error C2143: syntax error : missing ')' before ';' 1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\sql.h(850): error C2061: syntax error : identifier '__in_xcount'
|
|
|
ArkM (IS/IT--Management) |
2 Apr 12 17:34 |
Include <windows.h> before <sqlext.h> (better place this include in stdafx.h if you compile with pre-compiled headers).
The <stdext.h> header uses lots of symbols from <windows.h> (see error messages list;)... |
|
Thanks, I did not think about the windows.h |
|
well now I have a problem connecting to the database, is there something in this line that is doing it: CODEchar szDSN[256] = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\Users\\Sasuke\\Documents or something in the reset of my code that sends to to the bottom else? |
|
|
ArkM (IS/IT--Management) |
3 Apr 12 14:45 |
Luckily (for me), I don't deal with Access now but I venture a remark:
The true problem is: nobody (except you) knows what (and where) is your problem (OS, ODBC configuration and installed drivers, failed statement, return code(s) etc).
Ask good question == have a good chance of a good answer... |
|
well I will try to answer the questions to the best of my ability. OS: Windows 7 ODBC config: not sure where to look for that, access or Visual C++ installed drivers: not sure where to look failed statement: not sure but the following line(which I indicated with arrows returns -1 CODE#include "stdafx.h" #include <sqlext.h> #include <iostream> #include <string>
using namespace std;
char szDSN[256] = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\Users\\Sasuke\\Documents\\Database1.accdb;";
//LPCTSTR lpszConnect = _T("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DSN='';DBQ=C:\\Users\\Sasuke\\Documents\\Database1.accdb;");
//*****************************************************************************************
int main() { /* Data Access Method used in this sample */ const char* DAM = "Direct ODBC";
HENV hEnv; HDBC hDbc;
/* ODBC API return status */ RETCODE rc;
int iConnStrLength2Ptr; char szConnStrOut[256];
//unsigned char* query = "SELECT Customers.[Company], Customers.[First Name] FROM Customers;";
string query = "SELECT Customers.[Company], Customers.[First Name] FROM Customers;";
SQLCHAR chval1[128], chval2[128], colName[128]; int ret1; int ret2;
/* Number of rows and columns in result set */ SQLINTEGER rowCount = 0; SQLSMALLINT fieldCount = 0, currentField = 0; HSTMT hStmt;
/* Allocate an environment handle */ rc = SQLAllocEnv(&hEnv); /* Allocate a connection handle */ rc = SQLAllocConnect(hEnv, &hDbc);
/* Connect to the 'Northwind 2007.accdb' database */ rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)szConnStrOut, 255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT); ->->if (SQL_SUCCEEDED(rc)) { printf("%s: Successfully connected to database. Data source name: \n %s\n", DAM, szConnStrOut);
/* Prepare SQL query */ printf("%s: SQL query:\n %s\n", DAM, query);
rc = SQLAllocStmt(hDbc,&hStmt); rc = SQLPrepare(hStmt, query, SQL_NTS); /* Bind result set columns to the local buffers */ rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, chval1, 128, (SQLINTEGER*)&ret1); rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, chval2, 128, (SQLINTEGER*)&ret2); /* Excecute the query and create a record set */ rc = SQLExecute(hStmt); if (SQL_SUCCEEDED(rc)) { printf("%s: Retrieve schema info for the given result set:\n", DAM); SQLNumResultCols(hStmt, &fieldCount); if (fieldCount > 0) { for (currentField=1; currentField <= fieldCount; currentField++) { SQLDescribeCol(hStmt, currentField, colName, sizeof(colName), 0, 0, 0, 0, 0); printf(" | %s", colName); } printf("\n"); } else { printf("%s: Error: Number of fields in the result set is 0.\n", DAM); }
printf("%s: Fetch the actual data:\n", DAM); /* Loop through the rows in the result set */ rc = SQLFetch(hStmt); while (SQL_SUCCEEDED(rc)) { printf(" | %s | %s\n", chval1, chval2); rc = SQLFetch(hStmt); rowCount++; };
printf("%s: Total Row Count: %d\n", DAM, rowCount); rc = SQLFreeStmt(hStmt, SQL_DROP); } } else { printf("%s: Couldn't connect to %s.\n", DAM, szDSN); }
/* Disconnect and free up allocated handles */ SQLDisconnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
printf("%s: Cleanup. Done.\n", DAM);
if you need anymore if please let me know |
|
oh yeah and the error is: CODEDirect ODBC: Couldn't connect to Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DSN='';DBQ=C:\Users\User\Documents\Database1.accdb;. |
|
|
ArkM (IS/IT--Management) |
4 Apr 12 4:45 |
|
thanks, I will try the link for answers, but the ODBC forums here have not had any questions answered since almost a year ago, not sure what that means but I am also looking on microsoft forums for answers |
|
|
 |
|