使用odbc访问数据库
2008-11-12 13:50
387 查看
int main()
{
SQLRETURN retCode;
SQLHANDLE henv;
SQLHDBC hdbc;
DWORD dwError = 0;
retCode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLAllocHandle error = " << dwError << endl;
return 0;
}
retCode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLSetEnvAttr error = " << dwError << endl;
return 0;
}
retCode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLAllocHandle error = " << dwError << endl;
return 0;
}
retCode = ::SQLConnect(hdbc, (SQLCHAR*)"mysqlconnect", SQL_NTS, (SQLCHAR*)"root", SQL_NTS, (SQLCHAR*)"root", SQL_NTS);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLConnectA error = " << dwError << endl;
return 0;
}
SQLHSTMT hstmt;
retCode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLAllocHandle error = " << dwError << endl;
return 0;
}
string strSQL = "select * from Student;";
retCode = SQLExecDirectA(hstmt, (SQLCHAR*)strSQL.c_str(), SQL_NTS);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLExecDirectA error = " << dwError << endl;
return 0;
}
SQLCHAR szName[10] = "/0";
SQLCHAR szClass[10] = "/0";
SQLCHAR szPasswd[20] = "/0";
SQLINTEGER dwSid = 0;
int nResult = 0;
int i = 0;
while (true)
{
retCode = SQLFetch(hstmt);
if (retCode == SQL_ERROR)
{
return 0;
}
else if (retCode == SQL_NO_DATA)
{
break;
}
else
{
SQLGetData(hstmt, 1, SQL_INTEGER, &dwSid, 8, (SQLINTEGER*)&nResult);
SQLGetData(hstmt, 2, SQL_CHAR, szName, 10, (SQLINTEGER*)&nResult);
SQLGetData(hstmt, 3, SQL_CHAR, szClass, 10, (SQLINTEGER*)&nResult);
SQLGetData(hstmt, 4, SQL_CHAR, szPasswd, 16, (SQLINTEGER*)&nResult);
cout << "------------ information for record: " << i << " -------------" << endl;
cout << "sid = " << dwSid << endl;
cout << "sname = " << szName << endl;
cout << "sclass = " << szClass << endl;
cout << "szPasswd = " << szPasswd << endl;
cout << "-----------------------------------------------------" << endl << endl;
i++;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 1;
}
{
SQLRETURN retCode;
SQLHANDLE henv;
SQLHDBC hdbc;
DWORD dwError = 0;
retCode = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLAllocHandle error = " << dwError << endl;
return 0;
}
retCode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLSetEnvAttr error = " << dwError << endl;
return 0;
}
retCode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLAllocHandle error = " << dwError << endl;
return 0;
}
retCode = ::SQLConnect(hdbc, (SQLCHAR*)"mysqlconnect", SQL_NTS, (SQLCHAR*)"root", SQL_NTS, (SQLCHAR*)"root", SQL_NTS);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLConnectA error = " << dwError << endl;
return 0;
}
SQLHSTMT hstmt;
retCode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLAllocHandle error = " << dwError << endl;
return 0;
}
string strSQL = "select * from Student;";
retCode = SQLExecDirectA(hstmt, (SQLCHAR*)strSQL.c_str(), SQL_NTS);
if ( (retCode != SQL_SUCCESS) && (retCode != SQL_SUCCESS_WITH_INFO) )
{
dwError = GetLastError();
cout << "SQLExecDirectA error = " << dwError << endl;
return 0;
}
SQLCHAR szName[10] = "/0";
SQLCHAR szClass[10] = "/0";
SQLCHAR szPasswd[20] = "/0";
SQLINTEGER dwSid = 0;
int nResult = 0;
int i = 0;
while (true)
{
retCode = SQLFetch(hstmt);
if (retCode == SQL_ERROR)
{
return 0;
}
else if (retCode == SQL_NO_DATA)
{
break;
}
else
{
SQLGetData(hstmt, 1, SQL_INTEGER, &dwSid, 8, (SQLINTEGER*)&nResult);
SQLGetData(hstmt, 2, SQL_CHAR, szName, 10, (SQLINTEGER*)&nResult);
SQLGetData(hstmt, 3, SQL_CHAR, szClass, 10, (SQLINTEGER*)&nResult);
SQLGetData(hstmt, 4, SQL_CHAR, szPasswd, 16, (SQLINTEGER*)&nResult);
cout << "------------ information for record: " << i << " -------------" << endl;
cout << "sid = " << dwSid << endl;
cout << "sname = " << szName << endl;
cout << "sclass = " << szClass << endl;
cout << "szPasswd = " << szPasswd << endl;
cout << "-----------------------------------------------------" << endl << endl;
i++;
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 1;
}
相关文章推荐
- 使用ODBC访问数据库
- 使用ODBC访问数据库
- 使用ODBC访问数据库(一)
- 1:ODBC连接数据库的流程 2:访问数据库的基本流程3:使用ReseltSet 的基本流程 javac程序连接数据库源代码
- 使用ODBC访问数据库
- 使用ODBC访问数据库
- 使用ODBC访问数据库(二)
- 使用ODBC和ADO访问数据库
- 使用OracleClient,OLEDB,ODBC,Visual Studio,ODP.NET 来连接 Oracle访问数据库
- 使用ODBC数据提供程序访问MSSQL数据库
- 使用ODBC访问数据库(二)
- ASP.NET访问数据库(一):使用odbc填充datagrid
- 使用JavaScript 访问本地ODBC数据库
- odbc使用SQLDriverConnect连接数据库
- VC中使用ADO访问数据库技术程序实现方法
- 因为数据库正在使用,所以无法获得对数据库的独占访问权
- MFC中使用ADO访问数据库(心得一)
- AppFramework1.0数据库访问组件使用说明(六)QueryFilter的使用
- Sql server还原失败(数据库正在使用,无法获得对数据库的独占访问权)
- SQL SERVER 因为数据库正在使用,无法获得对数据库的独占访问权!