通过ODBC API实现对数据库的访问
2008-08-09 19:26:16 来源:WEB开发网本文示例源代码或素材下载
自从初次接触到vckbase,在里面学了很多东西,这跟大家无私的奉献是离不开的。在数据库方面的技术文章中,很多篇幅是用来介绍ADO或者DAO的访问方式,而关于用ODBC API访问数据库的文章却少之又少。虽然用ODBC访问数据库比较麻烦,但却很灵活,效率高,又便于了解ADO、DAO的底层封装方式,对提升整体软件思想是很有好处的。
现在就数据库的操作类型来谈谈ODBC API的使用。
1、配置数据源。例:
SQLRETURN retcode;
Retcode = SQLConfigDataSource(NULL,ODBC_ADD_SYS_DSN,"SQL Server",
"DSN=masterServer=(local)Database=master");
if(!retcode)
{
AfxMessageBox("系统数据源配置失败!");
return FALSE;
}
2、连接数据库。连接数据库看似要写的很多,其实只要写一次以后,仅仅复制一下,改下数据库名、用户名和密码即可。例:
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv) ;
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
retcode = SQLConnect(hdbc, (SQLCHAR*)(LPCTSTR)m_strDSN, SQL_NTS,
(SQLCHAR*)(LPCTSTR)m_strUSER, SQL_NTS,
(SQLCHAR*)(LPCTSTR)m_strPWD, SQL_NTS);
if (!(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO))
{
AfxMessageBox("数据库连接失败!") ;
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return FALSE;
}
else
{
m_bLink = TRUE;
return TRUE;
}
}
else
{
AfxMessageBox("连接句柄分配出错") ;
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return FALSE;
}
}
else
{
AfxMessageBox("属性设置出错!") ;
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return FALSE;
}
}
else
{
AfxMessageBox("环境变量分配出错!") ;
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return FALSE;
}
3、表操作。连接完数据库后,可以在数据库中执行SQL语句来实现对数据库表的查询。其具体操作类型又可以分成删除表、创建表、修改表等。例:
更多精彩
赞助商链接