基于ODBC的MFC与sql_server2008r2连接教程和错误解决方法
基于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连接教程和错误解决方法相关推荐
- Win10远程桌面连接身份验证错误解决方法
Win10远程桌面连接身份验证错误解决方法分享.有用户想要通过远程连接的方式和远程操作好友的电脑,但是在建立连接的时候,却出现了连接错误.窗口中出现了错误提示显示连接身份验证错误.那么这个问题要怎么去 ...
- SQLyong连接mysql 2058错误解决方法(记录)
docker sqlyong连接mysql 2058错误解决方法 原因 出现错误的主要原因是mysql 8以上的版本的加密方式发生了改变,导致连接失败 解决方法 1.docker进入mysql容器 d ...
- 安装向导因错误而提前结束_【软件安装】SIMATIC STEP7 V5.6中文版安装教程及错误解决方法...
1 安装要求 1. 只能在win10系统上安装,win7和XP系统是不能安装的,win10系统建议安装win10专业版的. 2. 电脑配置,250G硬盘空间,4G运行内存,CPU至少2.1HZ频率. ...
- Win7x64中使用VS调试WEB项目报“ORA-06413: 连接未打开”错误解决方法
错误描述 普通Web项目,Web项目在32位系统上跑的好好的,一点问题没有. 使用VS内置的开发服务器调试,页面能正常启动,但一连接数据库就报"ORA-06413: 连接未打开"错 ...
- 与虚拟机连接出现ora-12514错误解决方法
谈到ora-12154问题,网上有一大堆解决方法,原因基本统一:tns或listener配置不正确.对于listener配置不正确的一般较少发生,大多数人都是按照默认配置一路"下一步&quo ...
- php5.6 mysql被重置_php5.6连接mysql8出现错误解决方法
大家都知道,从php5.6版本开始就支持mysqli函数了,但同时还是可以使用mysql函数的,但不管使用这其中哪一种函数,似乎都无法连接mysql8版本的数据库,一连接就报错:The server ...
- Studio 3T无法连接MongoDB异常错误 解决方法
问题:第一次使用MongoDB,发现没设置密码之前可以连上,设置密码之后MongoDB客服端可以登入密码使用,但是Studio连接不上MongoDB,连接方式是Basic方式,然后发现连接不上. 解决 ...
- “用户sa登录失败,该用户与可信sql server连接无关联”错误解决方法
如果你出现如题的错误,问题可能是不同.你可以尝试如下的几种解决方法,没准哪里你就设置错了,稍微配置一下就OK了,没什么复杂的.本人截图上图的效率很低,所以没能图文并茂,不好意思啦. 1.设置SQL S ...
- mysql的Navicat连接显示1862错误解决方法
1.选择可视化连接时,始终连接不上,并不是用户名或密码错误,而是长期没用的密码过期 通过以下步骤操作: (1)进入mysql安装目录的bin目录下,执行>mysql -uroot -p 密码 即 ...
最新文章
- Android中资源文件夹res/raw和assets的使用
- 解析json,是还是不是,
- (十七)深入浅出TCPIP之HTTP和HTTPS
- 数字图像处理学习笔记(一):特征检测和匹配概述
- Sonar6.0应用之一:基于centos7.2安装
- Leetcode: mimimum depth of tree, path sum, path sum II
- kibana创建索引_ELK 索引生命周期管理
- Python: 从PYTORCH导出模型到ONNX,并使用ONNX运行时运行它
- 精和泛的一点思考(跨学科思维)
- Bash递归函数计算斐波纳吉(fibonacci)数列
- java ssh 学习_初学Java ssh之Spring 第三篇
- LPDDR4协议规范之(二)复位和上电初始化
- seek 方法java,Seek.java
- 程序员写好技术文章的几点小技巧,简述java内存模型面试
- 王万生计算机组成原理第三版,王万生《计算机组成原理》清华大学出版社完整答案...
- java加法的底层_常见开发语言加减乘除底层是如何做到的?
- Redis是什么?Redis有哪些数据类型?Redis怎么集群?
- oracle重复名字,oracle中的名字(names for oracle)
- android elevation translationz 简书,Android5.x中的阴影效果elevation和translationZ的实现方法...
- 创意红色祥云中国风PPT模板