VS2012通过ODBC连接到SQLSERVER详细说明
1. 安装好VS2012和SQLSERVER
2. 配置SQLSERVER实用SQL Server Management Studio连接自己的实例(如下图所示)
3. 双击SA,点击登录属性->常规,实用SQL Server身份验证,配置好密码
4. 然后右键点击实例属性,修改安全性为SQL Server和Window身份验证模式
5. 创建一个测试数据库sunyydb,创建一个测试表test,包含2列,id和name
6. 打开
控制面板\所有控制面板项\管理工具\ODBC数据源管理器(界面如下图所示
7. 点击配置:起一个DSN名字,配置SQLSERVER服务器名,点击下一步
8.配置登录密码为刚才修改的sa,密码为第三部配置的密码,客户端配置为TCP/IP,点击下一步
9.修改默认数据库为第五步创建的数据库sunyydb,点击下一步
10.测试数据源,至此ODBC配置完成,后面可以通过MFC执行SQL语句
11.创建一个基于对话框的MFC程序
放入2个EDIT CONTROL和三个按钮
IDC_EDITID:关联成员变量CEdit m_cust_id;
IDC_EDITNAME:关联成员变量CEdit m_cust_name;
IDADD,IDCHECK,IDDEL
12.在对话框类头文件添加”afxdb.h”并且添加成员m_DataBase
classCDateBaseTestDlg :public CDialogEx
#include"afxdb.h"
CDatabase m_DataBase;
14.增加三个按钮的点击事件
具体代码如下:
void CDateBaseTestDlg::OnBnClickedAdd()
{
//TODO: 在此添加控件通知处理程序代码
intcustid=0;
CString csCustName;
if(!GetCustIdFromEdit(custid))
{
AfxMessageBox("Get CustId Error Please input id first");
return;
}
if(!m_cust_name.GetWindowTextLength())
{
AfxMessageBox("Cust Name is Null Please input first");
return;
}
m_cust_name.GetWindowText(csCustName);
try
{
CString strsql;
strsql.Format("insert into test(id,name) values (%d,'%s')",custid,csCustName);
AfxMessageBox(strsql);
m_DataBase.ExecuteSQL(strsql);
}
catch(CDBException px)
{
px.ReportError();
px.Delete();
}
}
void CDateBaseTestDlg::OnBnClickedCheck()
{
//TODO: 在此添加控件通知处理程序代码
intcutid;
CString csCustName;
if(!GetCustIdFromEdit(cutid))
{
AfxMessageBox("Update date custid is null");
return;
}
if(!m_cust_name.GetWindowTextLength())
{
AfxMessageBox("Update date custname is null");
return;
}
m_cust_name.GetWindowText(csCustName);
try
{
CString str;
str.Format("update test set name = '%s' where id='%d'",csCustName,cutid);
m_DataBase.ExecuteSQL(str);
}
catch(CDBException px)
{
px.ReportError();
px.Delete();
}
AfxMessageBox("Update success");
}
void CDateBaseTestDlg::OnBnClickedDel()
{
//TODO: 在此添加控件通知处理程序代码
intcutid;
CString csCustName;
if(!GetCustIdFromEdit(cutid))
{
AfxMessageBox("Delete date custid is null");
return;
}
if(!m_cust_name.GetWindowTextLength())
{
AfxMessageBox("Delete date custname is null");
return;
}
m_cust_name.GetWindowText(csCustName);
try
{
CString str;
str.Format("delete from test where id = %d",cutid);
m_DataBase.ExecuteSQL(str);
}
catch(CDBException px)
{
px.ReportError();
px.Delete();
}
AfxMessageBox("Delete success");
}