工控编程吧
标题:
251上位机VC MFC使用SQL Connect函数连接SQL Server
[打印本页]
作者:
qq263946146
时间:
2016-3-22 11:53
标题:
251上位机VC MFC使用SQL Connect函数连接SQL Server
(, 下载次数: 6)
上传
点击文件名下载附件
251上位机VC MFC使用SQL Connect函数连接SQL Server
功能展示
VC
提供了多种多样的数据库访问技术
--ODBC API,MFC ODBC,DAO,OLE DB
和
ADO
等等,不同的技术有不同的特点,这些技术都提供了简单灵活访问速度快及可扩展性好的服务特点。当前例程通过
ODBC API
函数连接访问数据库,点击按钮,例程会与指定的数据库连接,并将执行函数的返回值显示出来,效果如图
要点提示
一。ODBC即OPEN DATABASE CONNECTIVITY(开放数据库连接)提供了一个通用的编程接口,允许程序与多种不同的数据库连接,为oracle ,sql server等提供了驱动程序,用户可以使用SQL语句进数据库进行直接的低层操作。在我们使用ODBC API函数创建数据库应用程序时,得引入头文件sql.h,sqlext.h,sqltypes.h及库文件odbc32.lib. 部分文件在我们的编辑软件如VC6.0都有提供,所以编写程序时选择性包含进工程;
一般有基本的五个步骤:
1,分配 ODBC环境,使一些内部结构初始化,完成这一步得分配 一个SQLHENV类型的变量在ODBC环境中做句柄使用;
2,为将要使用的一个数据源分配 一个连接句柄,由函数SQLAllocHandle完成;
3,使用SQLConnect函数把连接句柄与数据库连接起来,连接前可通过函数SQLSetConnectAttr设置连接属性
4,进行SQL语句的操作,完成后用户得到想要的结果,可 以取消与数据库的连接;
5,最后是释放先前创建的句柄
当前例程演示使用SQL Connect API函数连接SQL Server,关键用到一函数SQLConnect()进行连接.
SQLConnect()函数原型为SQLRETURN SQLConnect(SQLHDBCConnectionHandle,
SQLCHAR *ServerName,SQLSMALLINTNameLength1,
SQLCHAR *UserName,SQLSMALLINTNameLength2,
SQLCHAR *Authentication,SQLSMALLINTNameLength3);
nnectionHandle为连接句柄
ServerName为数据源名称
NameLength1为数据源名称长度
UserName为用户ID
NameLength2为用户ID长度
Authentication为用户密码
NameLength3 为用户密码长度
返回值为SQL_SUCCESS,SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE,可以查阅MSDN手册;
二。应用程序访问一个数据库前,首先得用ODBC管理器注册一个数据源,管理器根据数据源提供的数据库位置,类型及ODBC驱动信息,建立起与具体的数据库的联系;
ODBC管理器为WINDOWS2000后系统的系统软件,设置为:1.控制面板->ODBC,2.打开ODBC数据源管理器;选择USER DSN(用户DSN)选项,3.点击左侧添加按钮,在弹出的对话框选择驱动类型,例程选择为access driver,点击完成。4.在弹出的对话框添加数据源名称(随意),描述(随意),再点击选择,选择数据库文件;完成,数据库文件由第三方法数据管理软件 创建,使用时我们就知晓基用户名及密码;
ODBC管理器的具体设置可进一步观看视频教程
实现功能
1.新建基于对话框的应用程序
2.拖拽一按钮<使用SQLConnect函数连接SQL Server>及列表控件其Id为IDC_LIST1;
按钮关联函数
void CGkbc8Dlg::OnConnect()
{
CString sText;
CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_LIST1);
SQLHENV hEnv;
SQLHDBC hDbc;
SQLHSTMT hStmt;
SQLRETURN ReturnCode;
//<>
ReturnCode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hEnv);//分配环境句柄
sText.Format("%d",ReturnCode);
SetListText("SQLAllocHandle(SQL_HANDLE_ENV",sText);
if(ReturnCode!=SQL_SUCCESS && ReturnCode!=SQL_SUCCESS_WITH_INFO)//分配失败则返回
return ;
//<>
ReturnCode = SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);//设置ODBC环境属性
sText.Format("%d",ReturnCode);
SetListText("SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION",sText);
if(ReturnCode!=SQL_SUCCESS && ReturnCode!=SQL_SUCCESS_WITH_INFO)
return ;
//<>
ReturnCode = SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDbc);//分配联接句柄
sText.Format("%d",ReturnCode);
SetListText("SQLAllocHandle(SQL_HANDLE_DBC",sText);
复制代码
if(ReturnCode!=SQL_SUCCESS && ReturnCode!=SQL_SUCCESS_WITH_INFO)
return ;
//<>
SQLSetConnectAttr(hDbc,SQL_LOGIN_TIMEOUT,(void*)10,0);//设置登录超时时间为10秒
ReturnCode = SQLConnect(hDbc, //连接到数据源
(SQLCHAR*)"gkbc8",SQL_NTS, //数据源名称及名称长度
(SQLCHAR*)"admin",SQL_NTS, //用户ID
(SQLCHAR*)"",SQL_NTS); //用户密码
sText.Format("%d",ReturnCode);
SetListText("SQLConnect(hDbc",sText);
if(ReturnCode!=SQL_SUCCESS && ReturnCode!=SQL_SUCCESS_WITH_INFO)
return ;
//<>
ReturnCode = SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hStmt);//分配语句句柄
sText.Format("%d",ReturnCode);
SetListText("SQLAllocHandle(SQL_HANDLE_STMT",sText);
if(ReturnCode ==SQL_SUCCESS || ReturnCode ==SQL_SUCCESS_WITH_INFO)
{
//在此处理数据
SQLFreeHandle(SQL_HANDLE_STMT,hStmt);
}
SQLDisconnect(hDbc);//断开数据连接
SQLFreeHandle(SQL_HANDLE_DBC,hDbc);//释放句柄
SQLFreeHandle(SQL_HANDLE_ENV,hEnv);
}
复制代码
3.添加数据库函数头文件及一个自定义函数void SetListText(CStringsText1,CString sText2);
#include <sqlext.h>
#pragma comment(lib,"odbc32.lib")
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/e564d9194b6830f237f6d83a69c4525f/0/0/w_19rsxequ79.swf-albumId=5509081609-tvId=5509081609-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4