#include
#include
#include
#include
#include
int main()
{
HANDLE hEnv = SQL_NULL_HANDLE;
HANDLE hDbc = SQL_NULL_HANDLE;
HANDLE hStmt = SQL_NULL_HANDLE;
SQLINTEGER nRe = 0;
SQLCHAR szConnectStr[255] = { "Driver={Microsoft Excel Driver
(*.xls)};dbq=E:\\a.xls;READONLY=FALSE;" };
SQLCHAR szOutStr[255] = { 0 };
SQLSMALLINT nOutLen;
SQLCHAR szSqlStr[255] = { 0 };
nRe = ::SQLAllocHandle(SQL_HANDLE_ENV, NULL, &hEnv);
if (nRe == SQL_SUCCESS)
{
nRe=::SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLINTEGER
*)SQL_OV_ODBC3, SQL_INTEGER);
if (nRe == SQL_SUCCESS)
{
nRe = ::SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
if (nRe == SQL_SUCCESS)
{
nRe = SQLDriverConnect(hDbc,NULL, szConnectStr, _countof(szConnectStr), szConnectStr, 255, &nOutLen, SQL_DRIVER_NOPROMPT);
//nRe = SQLConnect(hDbc, (SQLCHAR *)"a", 1, NULL, 0, NULL, 0);
if (nRe == SQL_SUCCESS || nRe == SQL_SUCCESS_WITH_INFO)
{
nRe = ::SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
if (nRe == SQL_SUCCESS)
{
SQLINTEGER nLen = (SQLINTEGER)sprintf((char *)szSqlStr, "%s", "alter table demo add nickname char(20)");
nRe = ::SQLExecDirect(hStmt, szSqlStr, nLen);
if (nRe == SQL_SUCCESS)
{
/* while (::SQLFetch(hStmt) != SQL_NO_DATA)
{
SQLCHAR szTmpStr[255] = { 0 };
SQLINTEGER nTmpLen;
::SQLGetData(hStmt, 1, SQL_C_CHAR, szTmpStr, 255, &nTmpLen);
printf("%s\n", szTmpStr);
}
*/
}
else
{
printf("EcecDirect false!\n");
}
}
else
{
printf("hstmt false!\n");
}
::SQLDisconnect(hDbc);
}
else
{
printf("connect false!\n");
}
::SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
}
else
{
printf("hDbc false!\n");
}
}
else
{
printf("hEnvAttr false!\n");
}
SQLFreeHandle(SQL_HANDLE_ENV,hEnv);
}
else
{
printf("hEnv false!\n");
}
getchar();
return 0;
}