基于ODBC的MFC与sql_server2008r2连接教程和错误解决方法

应用环境:

编译平台:vs2013

数据库:Mysql Server2008r2

桥接软件: ODBC(微软提供的开放数据库连接器)

用MFC读写数据库的内容之前,需要分别对数据库server2008,ODBC,vs2013进行配置。

本文主要分为五大部分。第一部分介绍数据库server2008的配置;第二部分介绍ODBC的配置;第三部分介绍vs2013的配置;第四部分介绍MFC读写server2008数据库的一个简单实例;第五部分介绍一些常见的错误类型和解决方案。

注意:数据库安装教程请参考【数据库安装】文章

文章标题:MYSQLServer2008R2详细的图文安装教程

网址:http://blog.csdn.net/naibozhuan3744/article/details/78562769

一、数据库server2008的配置

1.1对sql server配置管理器进行配置,操作如下:

【开始菜单】-【Microsoft SQL Server2008 R2】-【配置工具】-【SQL Server配置管理器】

1.2将协议名称【Named Pipes】的状态,改为已启用状态(初始状态为已禁用),修改后的状态如下图所示:(修改方法:在图标右击-启动)

1.3启动sql server数据库登录界面

【开始菜单】–【Microsoft SQL Server 2008 R2】–【SQL Server Management Studio】

在【身份验证(A)】处,选择【SQL Server 身份验证】,然后将之前安装数据库时,设置的登录名和密码填写。比如我的登录名和密码如下:

登录名:sa

密码:sa

1.4在登录界面上,创建一个新的数据库,之后的c++程序将在这个数据库中读写数据。比如我新创建了一个Student数据库,在表里面添加了如下内容。

1.5在【安全性】-【登录名】-【sa】-【属性】(对图片sa单击右键,弹出属性对话框)界面,填写新的sa账号和密码。(不建议修改,如果之前安装的时候没有账号密码,可以在这里重新设置一个用于登录的账号密码)

并且确保选择页的【状态】是如下图所示:

1.6确保【数据库(根目录)】-【属性】(单击右键弹出属性对话框)-【安全性】的配置如下图所示:

二、 ODBC的配置

2.1打开ODBC

【开始菜单】-【运行框】输入ODBC,搜索出如下结果,然后选择第一个【数据源(ODBC)】,弹出如下界面。

我已经创建了一个SQL Server,接下来将重新创建一个。

2.2在【用户DSN】一栏下面的【添加】按钮,单击添加。在弹出的对话框中选择SQL Server,然后点击【完成】按钮。如下图所示:

弹出如下对话框:

【名称】:填写之前创建的sa账号

【服务器】:填写安装数据库时选择的(local)

单击【下一步】,弹出如下对话框:

选择用ID和密码登录验证

【登录ID】:sa

【登录密码】:sa

单击【下一步】,将【更改默认的数据库为】下面的组合框选择Student(之前用sql server数据库新创建的数据库,之后的程序将对这个Student数据库进行读写)

单击【下一步】选择默认的

然后单击【完成】,测试成功,表明之前配置正确。

三、 vs2013的配置

3.1新建一个MFC空白工程,如下图所示。

3.2创建好一个新的工程后,修改工程属性

将【字符集】改为【使用多字节字符集】

3.3此时,只要在函数中实例一个数据库对象,就可以调用数据库中的函数,对数据库进行读写操作,实例一个数据库对象代码如下:

CDatabase m_db;

四、 MFC读写server2008数据库的几个简单实例

4.1示例程序1:

//函数功能:动态及方式打开记录集,循环读数据库第一行数据,第二行数据,直到最后一行

CDatabase m_pdatabase;

CString str1, strSql, str2, str3, str4, str5, str6;

int count =0;

int a2 =m_pdatabase.Open(NULL,FALSE,FALSE,"ODBC;DSN=sa;UID=sa;PWD=sa");

CRecordset Sample(&m_pdatabase);

CString a10 =Sample.GetDefaultConnect();

int a3 =Sample.Open(CRecordset::dynaset,_T("Select*from [dbo].[boss]"));

int a4 =Sample.IsOpen();

Sample.MoveFirst();

while(!Sample.IsEOF())

{

Sample.GetFieldValue("姓名", str2);

Sample.GetFieldValue("公司", str3);

Sample.GetFieldValue("年龄", str4);

Sample.GetFieldValue("婚姻状况", str5);

Sample.GetFieldValue("学历", str6);

if(Sample.m_strFilter = "[年龄] = 49")

Sample.m_strFilter= "[年龄]";

Sample.MoveNext();

}

Sample.m_strFilter= "[年龄] = 49";

Sample.m_strSort ="[年龄]";

int a80 =Sample.Requery();

Sample.m_strSort ="[年龄]";

strSql =Sample.GetSQL();

Sample.Requery();

4.2示例程序2:

//函数功能:只读方式打开记录集,先将数据从数据库读到记录集缓冲区,然后按照年龄进行排序,读到设置的CString变量中

CDatabase m_pdatabase;

CString str1, strSql, str2, str3, str4, str5, str6, sSql;

int a2 =m_pdatabase.Open(NULL,FALSE,FALSE,"ODBC;DSN=sa;UID=sa;PWD=sa");

CRecordset Sample(&m_pdatabase);

sSql = "SELECT name, age "

"FROM [dbo].[boss] "

"ORDER BY age ";

int a3 =Sample.Open(CRecordset::forwardOnly, sSql,CRecordset::readOnly);//只读语句

while(!Sample.IsEOF())

{

Sample.GetFieldValue("name", str2);//从数据库中读出数据,读表头为"姓名"下面的第一数据

Sample.MoveNext();

}

Sample.Close();

4.3示例程序3:删除,插入,修改数据库中的数据

CDatabase m_pdatabase;

CString str1, strSql;

int count =0;

int a2 =m_pdatabase.Open(NULL,FALSE,FALSE,"ODBC;DSN=sa;UID=sa;PWD=sa");//打开数据库

CRecordset Sample(&m_pdatabase);//CRecordset

int a3 =Sample.Open(CRecordset::dynaset,_T("Select*from [dbo].[boss]"));//打开记录集

int a4 =Sample.IsOpen();

CString sSql;

sSql.Empty();//删除一组记录集

sSql = "DELETE FROM [Student].[dbo].[boss]WHERE name='媛媛' AND公司='健坤' AND婚姻状况='未婚'";//"徐景周",

m_pdatabase.ExecuteSQL(sSql);// m_pdatabase

sSql.Empty();//插入一组记录集

sSql = "INSERT INTO[Student].[dbo].[boss](name,公司,age,婚姻状况,学历,序列号) VALUES ('媛媛','健坤',26,'未婚','本科',NULL)";//"徐景周",

m_pdatabase.ExecuteSQL(sSql);// m_pdatabase

sSql.Empty();//修改张三的序列号,从1变为10 ORDER BY age DESC

sSql = "UPDATE [Student].[dbo].[boss] SET序列号=5 WHERE name='媛媛'";//"徐景周",

m_pdatabase.ExecuteSQL(sSql);// m_pdatabase

Sample.Close();

五、 MFC的视图类自动生成的类,编译出现典型错误

5.1错误代码:

CString Cboss::GetDefaultConnect()

{

CString str = "DSN=sa;Description=\x5b89\x88c5mysql\x521b\x5efa\x7684\x6570\x636e\x670d\x52a1\x5668;UID=sa;PWD=sa;APP=Microsoft\x00aeVisual Studio\x00ae 2013;WSID=TJQ-PC;DATABASE=Student";

return _T(str);

}

5.2错误提示:

error C2022: “23433”: 对字符来说太大 e:\1tjq\vs2013\project1\mysqltest2\mysqltest2\boss.cpp   31      1    MySqlTest2

5.3解决办法

将字符串里面的反斜杠”\”,全部改为双斜杠“\\”,修改后的正确代码如下:

CString Cboss::GetDefaultConnect()

{

CString str = "DSN=sa;Description=\\x5b89\\x88c5mysql\\x521b\\x5efa\\x7684\\x6570\\x636e\\x670d\\x52a1\\x5668;UID=sa;PWD=sa;APP=Microsoft\\x00aeVisual Studio\\x00ae 2013;WSID=TJQ-PC;DATABASE=Student";

return _T(str);

}

参考内容:
http://blog.csdn.net/circlesquare/article/details/6929777
http://www.vckbase.com/module/articleContent.php?id=231
http://doc.orz520.com/a/doc/2014/0511/1994197.html?from=haosou
http://www.php.cn/mysql-tutorials-126613.html
http://www.cnblogs.com/good90/archive/2012/03/04/2379371.html

http://blog.csdn.net/u013719984/article/details/51108816

http://blog.csdn.net/mytt_10566/article/details/56277697

http://blog.163.com/yulihu123456%40126/blog/static/3732428220101222134117/

基于ODBC的MFC与sql_server2008r2连接教程和错误解决方法相关推荐

  1. Win10远程桌面连接身份验证错误解决方法

    Win10远程桌面连接身份验证错误解决方法分享.有用户想要通过远程连接的方式和远程操作好友的电脑,但是在建立连接的时候,却出现了连接错误.窗口中出现了错误提示显示连接身份验证错误.那么这个问题要怎么去 ...

  2. SQLyong连接mysql 2058错误解决方法(记录)

    docker sqlyong连接mysql 2058错误解决方法 原因 出现错误的主要原因是mysql 8以上的版本的加密方式发生了改变,导致连接失败 解决方法 1.docker进入mysql容器 d ...

  3. 安装向导因错误而提前结束_【软件安装】SIMATIC STEP7 V5.6中文版安装教程及错误解决方法...

    1 安装要求 1. 只能在win10系统上安装,win7和XP系统是不能安装的,win10系统建议安装win10专业版的. 2. 电脑配置,250G硬盘空间,4G运行内存,CPU至少2.1HZ频率. ...

  4. Win7x64中使用VS调试WEB项目报“ORA-06413: 连接未打开”错误解决方法

    错误描述 普通Web项目,Web项目在32位系统上跑的好好的,一点问题没有. 使用VS内置的开发服务器调试,页面能正常启动,但一连接数据库就报"ORA-06413: 连接未打开"错 ...

  5. 与虚拟机连接出现ora-12514错误解决方法

    谈到ora-12154问题,网上有一大堆解决方法,原因基本统一:tns或listener配置不正确.对于listener配置不正确的一般较少发生,大多数人都是按照默认配置一路"下一步&quo ...

  6. php5.6 mysql被重置_php5.6连接mysql8出现错误解决方法

    大家都知道,从php5.6版本开始就支持mysqli函数了,但同时还是可以使用mysql函数的,但不管使用这其中哪一种函数,似乎都无法连接mysql8版本的数据库,一连接就报错:The server ...

  7. Studio 3T无法连接MongoDB异常错误 解决方法

    问题:第一次使用MongoDB,发现没设置密码之前可以连上,设置密码之后MongoDB客服端可以登入密码使用,但是Studio连接不上MongoDB,连接方式是Basic方式,然后发现连接不上. 解决 ...

  8. “用户sa登录失败,该用户与可信sql server连接无关联”错误解决方法

    如果你出现如题的错误,问题可能是不同.你可以尝试如下的几种解决方法,没准哪里你就设置错了,稍微配置一下就OK了,没什么复杂的.本人截图上图的效率很低,所以没能图文并茂,不好意思啦. 1.设置SQL S ...

  9. mysql的Navicat连接显示1862错误解决方法

    1.选择可视化连接时,始终连接不上,并不是用户名或密码错误,而是长期没用的密码过期 通过以下步骤操作: (1)进入mysql安装目录的bin目录下,执行>mysql -uroot -p 密码 即 ...

最新文章

  1. Android中资源文件夹res/raw和assets的使用
  2. 解析json,是还是不是,
  3. (十七)深入浅出TCPIP之HTTP和HTTPS
  4. 数字图像处理学习笔记(一):特征检测和匹配概述
  5. Sonar6.0应用之一:基于centos7.2安装
  6. Leetcode: mimimum depth of tree, path sum, path sum II
  7. kibana创建索引_ELK 索引生命周期管理
  8. Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它
  9. 精和泛的一点思考(跨学科思维)
  10. Bash递归函数计算斐波纳吉(fibonacci)数列
  11. java ssh 学习_初学Java ssh之Spring 第三篇
  12. LPDDR4协议规范之(二)复位和上电初始化
  13. seek 方法java,Seek.java
  14. 程序员写好技术文章的几点小技巧,简述java内存模型面试
  15. 王万生计算机组成原理第三版,王万生《计算机组成原理》清华大学出版社完整答案...
  16. java加法的底层_常见开发语言加减乘除底层是如何做到的?
  17. Redis是什么?Redis有哪些数据类型?Redis怎么集群?
  18. oracle重复名字,oracle中的名字(names for oracle)
  19. android elevation translationz 简书,Android5.x中的阴影效果elevation和translationZ的实现方法...
  20. 创意红色祥云中国风PPT模板

热门文章

  1. 更新 | 待办事项,敏捷实践的核心工件
  2. 根据百度地图API自定义切换地图类型为卫星或普通
  3. 如何计算近似纳什均衡_如何通俗的理解纳什均衡点?
  4. 将Delphi2007的所有dcu打包到一个运行时包中
  5. php mail附件,php-mail()中的电子邮件附件出现问题
  6. iOS初级开发学习笔记:微信充值
  7. realEngine(UE4)实现开关门效果
  8. 振幅、周期、频率、相位定义及相互关系
  9. python爬虫妹子图抓取
  10. 抖音域名防封,抖音网址免拦截提示,抖音网站防红,域名报毒解决处理生成方法