MFC中用ado访问SQL Server 2005数据库

MFC中用ado访问SQL Server 2005数据库

今天老大交代项目,需要MFC访问另一台机器上的 SQL Server 2005数据库。MFC我不熟,SQL也从没用过。在网上查了不少资料,忙了一阵终于搞通了。与各位朋友分享一下,高手们就不用看了,这是写给像我一样初学者的。

一、安装SQL SERVER 2005,在本机建立服务器默认安装即可,也可以自己另起名字,安装时可以选择身份验证方式,有“SQL SERVER身份验证”与“windows身份验证”两种方式。我安装时默认“windows身份验证”,安装完毕建立数据库后改为“SQL SERVER身份验证”。

二、安装 Microsoft SQL Server Management Studio Express,一路默认即可。

三、我们先在本机建立个数据库,成功访问后再访问访问网络上别人的数据库。

1.         打开Microsoft SQL Server Management Studio Express。比如我的机器名是wulong,那么显示为 wulong/SQLEXPRESS直接点“连接”。

 

 

 

2.         登陆后鼠标右键点击数据库——》新建数据库,命名为haitest点击确定。

3.         建立数据库成功后,展开haitest 鼠标右键点“表”——》“新建表”输入你定义的标题,比如“名字”“编号”“年龄”“性别”。命名为haiTble

 

4.          

5.         建立表成功后,在目录“数据库”——》“haitest”——》“表”可以看到你刚建立的表dbo.haiTable,鼠标右键打开表输入内容。

6.         保存,你的表做好了。

 

 

四、数据库建立好了,下面我们写程序访问你的数据库中的表haiTable:

1.         MFC建立个对话框工程。

2.         在工程的stdafx.h文件中添加ADO的链接库

#import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")

3.         ado操作数据库需要三个句柄,ConnectionPtr用于连接数据库用,RecordsetPtr用于访问表中记录用。有这两个句柄就可以修改数据库记录了,还有个命令句柄,我们这里不介绍了。在你的程序中定义两个句柄。

// ChaiwindowDlg 对话框

class ChaiwindowDlg : public CDialog

{

…………………………….

//---------------------定义访问数据库的句柄

    _ConnectionPtr      m_pConnection;

    _RecordsetPtr        m_pRecordset;

//-----------------------------定义句柄完成

}

 

4.         对话框初始化中添加ADO的初始化,打开数据库。

BOOL ChaiwindowDlg::OnInitDialog()

{

       …………………………

         //------------------添加的初始化代码

if(!AfxOleInit())//这就是初始化COM

{

    AfxMessageBox("KE初始化出错!");

}

 

try

{

    m_pConnection.CreateInstance(__uuidof(Connection));

    m_pConnection->Open((_bstr_t)"Driver={SQL Server};Server=192.168.1.214//SQLEXPRESS;Database=haitest","","",adModeUnknown);

//或者写成

//m_pConnection->Open((_bstr_t)"Driver={SQL Server};Server=wulong//SQLEXPRESS;Database=haitest","","",adModeUnknown);

 

    //m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Demo.mdb","","",adModeUnknown);

}

catch(_com_error e)

{

    AfxMessageBox(e.Description());

}

//----------------------添加初始化代码结束

       ………………………….

}

 

注意wulong//SQLEXPRESS是双斜线啊,写错了就会返回 [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝。

 

5.         下面打开表我们刚建立的表名字是haiTable

try

{

       m_pRecordset.CreateInstance(__uuidof(Recordset));

       m_pRecordset->Open("SELECT * FROM haiTable",                // 查询DemoTable表中所有字段

                                          m_pConnection.GetInterfacePtr(),       // 获取库接库的IDispatch指针

                                          adOpenDynamic,

                                          adLockOptimistic,

                                          adCmdText);

}

catch(_com_error e)

{

       AfxMessageBox(e.Description());

}

 

6.         下面表里追加记录:

try

{

       // 写入各字段值

       m_pRecordset->AddNew();

       m_pRecordset->PutCollect("朋友的名字",_variant_t("希特勒"));

       m_pRecordset->PutCollect("朋友的编号",_variant_t("9527"));

       m_pRecordset->PutCollect("朋友的性别",_variant_t("人妖"));

       m_pRecordset->Update();

}

catch(_com_error *e)

{

       AfxMessageBox(e->ErrorMessage());

       return;

}

7.         关掉Microsoft SQL Server Management Studio Express后再打开haiTable表你看到增添了一条记录。

8.         退出程序时别忘了关闭ADO

if (m_pRecordset !=NULL)

{

       m_pRecordset->Close();

}

 

m_pConnection->Close();

 

五、sa或其他用户名登陆,比如登陆名sa密码123456访问192.168.1.35的服务器:

只需把前面第4步打开数据库中

m_pConnection->Open((_bstr_t)"Driver={SQL Server};Server=192.168.1.214//SQLEXPRESS;Database=haitest","","",adModeUnknown);改为

m_pConnection->Open((_bstr_t)"Driver={SQL Server};Server=192.168.1.35;Database=haitest;UID=sa;PWD=123456","","",adModeUnknown);

六、结束语:

就这么多了,大家有问题可以给我留言。在我能力范围内愿意为您服务。希望大家共同进步。

 

 

  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 16

打赏作者

水星灭绝

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值