通过ODBC API实现对数据库的访问
http://tech.ddvip.com 2008年08月09日 社区交流
内容摘要:在数据库方面的技术文章中,很多篇幅是用来介绍ADO或者DAO的访问方式,而关于用ODBC API访问数据库的文章却少之又少。虽然用ODBC访问数据库比较麻烦,但却很灵活,效率高,又便于了解ADO、DAO的底层封装方式,对提升整体软件思想是很有好处的。
自从初次接触到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语句来实现对数据库表的查询。其具体操作类型又可以分成删除表、创建表、修改表等。例:
来源:vckbase 作者:郑瑜 责编:豆豆技术应用
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……