C++数据库c语言源程序序

您所在的位置: &
C++连接mysql数据库的两种方法
C++连接mysql数据库的两种方法
本文主要介绍了C++连接mysql数据库的两种方法,希望通过本文,能对你有所帮助,一起来看。
现在正做一个接口,通过不同的连接字符串操作不同的数据库。要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多。通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法。可以通过2种方法实现。
第一种方法是利用ADO连接,
第二种方法是利用mysql自己的api函数进行连接。
第一种方法可以实现我当前的需求,通过连接不同的字符串来连接不同的数据库。暂时只连接了mysql,sqlserver,oracle,access。对于access,因为它创建表的SQL语句不太兼容标准SQL语句,需要做一些处理,这里暂时不说。第二种方法只能针对于mysql数据库的连接,不过用这种方法不用安装MyODBC服务器程序。
不管用哪种方法,首先需要安装Mysql数据库,安装方法请看&mysql安装及一些注意点&。最好安装一个Navicat for mysql,方便操作mysql数据库。下面分别说下这两种方法:
(一)通过ADO连接MySql数据库
1、通过ADO连接MySql数据库,首先得安装MyODBC服务器程序。
MyODBC版本要和MySql的版本对应上,否则会连接不上数据库。我用的版本分别是mysql-5.1.48-win32.msi和mysql-connector-odbc-5.1.5-win32.msi。
安装好后,点击开始菜单-&设置-&控制面板-&管理工具-&数据源(ODBC)-&用户DSN-&添加-&选择MySQL ODBC 5.1 Driver。如下图:
然后双击MySQL ODBC 5.1 Driver进行配置。配置好可以点Test进行下测试(如下图),如果能连上会弹出connection successful对话框。
上图中的Data Source Name:中的内容就是代码里DSN所对应的值。
例如:&DSN=MySqlODBC;server=database=test&。
2、配置好后,就可以开始编码了。
(1)首先导入ADO类型库。#import &c:\program files\common files\system\ado\msado15.dll& no_namespace rename(&EOF&,&adoEOF&)。您的环境中msado15.dll不一定在这个目录下,请按实际情况修改。或者把msado15.dll这个文件拷贝到你的工程目录下,直接#import &msado15.dll& \ no_namespace \rename (&EOF&, &adoEOF&)包含进来。
(2 )创建Connection对象并连接数据库
{& &CoInitialize(NULL);& &m_pConnection.CreateInstance(__uuidof(Connection));& &try&{ &&m_pConnection-&ConnectionTimeout&=&5; &&HRESULT&hr&=&m_pConnection-&Open(&DSN=MySqlODBC;server=database=test&,&root&,&root&,adModeUnknown); &} &catch(_com_error&&e) &{ &MessageBox(NULL,&e.Description(),&_T(&&),&MB_OK); &return&FALSE; &}& &return&TRUE; &}&&
(3)执行SQL语句
BOOL&CDBManagerSub::ExecuteSQL(&_bstr_t&bstrSQL&) &{ &&try&{ &&if(m_pConnection&==&NULL) &{ &&Open(m_dbType,&m_strServer,&m_strUserName,&m_strPasswor,&m_strDBName); &} &&&&&&&_RecordsetPtr&hr&=&m_pConnection-&Execute(bstrSQL,NULL,adCmdText); &return&true; &} &catch(_com_error&e) &{ &MessageBox(NULL,&e.Description(),&_T(&&),&MB_OK); &return&false; &} &}&&
_bstr_t bstrSQL为输入的SQL语句,如果返回TRUE,则执行成功,返回FLASH则会报对应的错误提示。
例如:下面的创建testTable表的SQL语句:
char*&pQuery&=&&create&table&if&not&exists&testTable(&ID&VARCHAR(10),&Name&VARCHAR(255),Descs&VARCHA(255),PRIMARY&KEY&(ID))&; &ExecuteSQL(pQuery);&&
&3、附上mysql数据库的操作,方便没有安装Navicat for mysql的朋友参考。
打开&开始-&所有程序-&MySQL-&MySQL Server 5.0-&MySQL Command Line Client.exe&,如果没有设置密码就直接按回车,会提示服务器启动成功。
mysql&&SHOW&DATABASES;//显示所有的数据库,注意一定要&敲&;&后再按回车 &mysql&&CREATE&DATABASE&//创建数据库 &mydbmysql&&USE&//选择你所创建的数据库 &mydbmysql&&SHOW&TABLES;&//显示数据库中的表 &mysql&&CREATE&TABLE&mytable&(username&VARCHAR(100),&visitelist&VARCHAR(200),remark&VARCHAR(200),PRIMARY&KEY&(username));//创建一个表mytable:&用户名;访问列表,主键为username &mysql&&DESCRIBE&//显示表的结构
(二)通过MySQL自己的API函数进行连接
1、使用API的方式连接,需要加载mysql的头文件和lib文件。
在VS2010的附加包含目录中添加\MySQL\MySQL Server 5.1\include。在安装MySql的目录下找。 把libmysql.dll和libmysql.lib文件拷贝到所建的工程目录下。然后在头文件里包含以下内容:
//mysql所需的头文件和库文件 &#include&&winsock.h&&#include&&mysql.h&&#pragma&comment(lib,&libmySQL.lib&)&
2、进行编码
(1)连接mysql数据库
头文件里定义数据源指针 MYSQL m_sqlC
//连接MySql数据库
try&{ &mysql_init(&m_sqlCon); &&if(!mysql_real_connect(&m_sqlCon,&&localhost&,&root&,&root&,&test&,3306,NULL,0)) &{ &AfxMessageBox(_T(&数据库连接失败!&)); &return&FALSE; &}& &return&TRUE; &} &catch&(...) &{ &return&FALSE; &}&
(2)关闭数据库
mysql_close(&m_sqlCon);&
(3)创建表
char*&pQuery&=&&create&table&if&not&exists&DS_Building(&ID&VARCHAR(10),Name&VARCHAR(255),Descs&VARCHAR(255),PRIMARY&KEY&(ID))&& &if(mysql_real_query(&m_sqlCon,pQuery,(UINT)strlen(pQuery))!=0) &{& &const&char*&pCh&=&mysql_error(&m_sqlCon); &return&FALSE; &}&
附MySQL的API接口:
mysql_affected_rows()&返回被最新的UPDATE,&DELETE或INSERT查询影响的行数。 &mysql_close()&关闭一个服务器连接。 &mysql_connect()&连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。 &mysql_change_user()&改变在一个打开的连接上的用户和数据库。 &mysql_create_db()&创建一个数据库。该函数不推荐;而使用SQL命令CREATE&DATABASE。 &mysql_data_seek()&在一个查询结果集合中搜寻一任意行。 &mysql_debug()&用给定字符串做一个DBUG_PUSH。 &mysql_drop_db()&抛弃一个数据库。该函数不推荐;而使用SQL命令DROP&DATABASE。 &mysql_dump_debug_info()&让服务器将调试信息写入日志文件。 &mysql_eof()&确定是否已经读到一个结果集合的最后一行。这功能被反对;&mysql_errno()或mysql_error()可以相反被使用。 &mysql_errno()&返回最近被调用的MySQL函数的出错编号。 &mysql_error()&返回最近被调用的MySQL函数的出错消息。 &mysql_escape_string()&用在SQL语句中的字符串的转义特殊字符。 &mysql_fetch_field()&返回下一个表字段的类型。 &mysql_fetch_field_direct&()&返回一个表字段的类型,给出一个字段编号。 &mysql_fetch_fields()&返回一个所有字段结构的数组。 &mysql_fetch_lengths()&返回当前行中所有列的长度。 &mysql_fetch_row()&从结果集合中取得下一行。 &mysql_field_seek()&把列光标放在一个指定的列上。 &mysql_field_count()&返回最近查询的结果列的数量。 &mysql_field_tell()&返回用于最后一个mysql_fetch_field()的字段光标的位置。 &mysql_free_result()&释放一个结果集合使用的内存。 &mysql_get_client_info()&返回客户版本信息。 &mysql_get_host_info()&返回一个描述连接的字符串。 &mysql_get_proto_info()&返回连接使用的协议版本。 &mysql_get_server_info()&返回服务器版本号。 &mysql_info()&返回关于最近执行得查询的信息。 &mysql_init()&获得或初始化一个MYSQL结构。 &mysql_insert_id()&返回有前一个查询为一个AUTO_INCREMENT列生成的ID。 &mysql_kill()&杀死一个给定的线程。 &mysql_list_dbs()&返回匹配一个简单的正则表达式的数据库名。 &mysql_list_fields()&返回匹配一个简单的正则表达式的列名。 &mysql_list_processes()&返回当前服务器线程的一张表。 &mysql_list_tables()&返回匹配一个简单的正则表达式的表名。 &mysql_num_fields()&返回一个结果集合重的列的数量。 &mysql_num_rows()&返回一个结果集合中的行的数量。 &mysql_options()&设置对mysql_connect()的连接选项。 &mysql_ping()&检查对服务器的连接是否正在工作,必要时重新连接。 &mysql_query()&执行指定为一个空结尾的字符串的SQL查询。 &mysql_real_connect()&连接一个MySQL服务器。 &mysql_real_query()&执行指定为带计数的字符串的SQL查询。 &mysql_reload()&告诉服务器重装授权表。 &mysql_row_seek()&搜索在结果集合中的行,使用从mysql_row_tell()返回的值。 &mysql_row_tell()&返回行光标位置。 &mysql_select_db()&连接一个数据库。 &mysql_shutdown()&关掉数据库服务器。 &mysql_stat()&返回作为字符串的服务器状态。 &mysql_store_result()&检索一个完整的结果集合给客户。 &mysql_thread_id()&返回当前线程的ID。 &mysql_use_result()&初始化一个一行一行地结果集合的检索。&
通过本文的介绍,希望你对C++连接mysql数据库的两种方法有所了解,供参考。
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&的更多文章
MySQL 5.6.10已经发布,Oracle将其称之为MySQL 5.6正式版。51CTO
HTML5领域,高空喊话的不在少数,很多人就感觉像是在上演狼来了...
十一归来,貌似大家都没有什么劲头。本周五,为期两天
《待字闺中:编程面试题集》集合最新最全的面试经验和
这周Windows8.1正式版发布了,不知道各位有没有去更新
本书是一本以示例形式直接面向应用的网络管理图书。书中以大量示例和大量实用网络管理与故障排除经验介绍了当前网络管理工作的各
51CTO旗下网站&Visual+C++数据库系统开发案例精选+光盘源码
秒后自动跳转到登录页
(奖励10下载豆)
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
Java 7并发编程实战
Java经典问题答案(
算法与数据结构-实用
百度面试题总结
北京中软笔试题
Java最著名的开源项
Java网络socket编程
Visual+C++数据库系统开发案例精选+光盘源码
上传时间:
技术分类:
资源评价:
(1位用户参与评价)
已被下载&110&次
c++开发实例,都是一些完整的系统
本资料共包含以下附件:
Visual+C++数据库系统开发案例精选+光盘源码.7z
(12位用户参与评价)
down友评价
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载1687次
相关专题推荐
本专题收录Java经典编程的实例源码,
在国内的开发语言中,java凭借这简单
本套视频教程是韩顺平老师,循序渐进
北京圣思园张龙(风中叶)老师的Java
讲述Arm嵌入式Linux系统下的C语言编程
这段视频是从尚学堂科技的教学课堂上
本套视频共78集,是由郝斌老师根据多
本视频专题共180集涵盖了C语言概述中
本视频专题共107集涵盖了Java概述、数
由传智播客毕向东老师讲解的Java基础
本专题为spring视频教程,共31集。教
本专题为C语言黑客编程系列视频教程,
本专题为韩顺平讲解的Java从入门到精
本专题为Java Web项目开发案例精粹视
SSH为struts+spring+hibernate的一个
本专题为疯狂Java李刚老师讲解的Stru
本周下载热点visual C++提供了多种多样的数据库访问技术&&ODBC API、MFC ODBC、MFC DAO(面向对象)、MFC OLEDB、和ADO等,这些技术各有自己的特点。为了解决ODBC开发的数据库应用程序访问数据库速度慢的问题,visual C++提供了新的访问技术&&OLEDB和ADO。OLEDB和ADO都是基于COM接口技术,可以直接对数据库的驱动程序进行访问,大大提高了访问的速度。
ODBC API技术又叫开放数据库连接,它提供了一个通用的编程接口,允许程序与不同的数据库进行连接,用户可以使用SQL语句对数据库进行直接的底层的操作。在使用ODBC API时,用户需要引入的文件为"sql.h","sqlext.h",和'sqltypes.h"
ODBC API的特点是功能强大。提供了异步操作、事务处理等高级功能。ODBC提供了一套统一的API,使得引用程序可以应用所提供的API来访问任何提供了ODBC驱动程序的数据库。而且,ODBC已经成为一种标准,所以,目前所有的关系数据库都提供了ODBC驱动程序,这使得ODBC的应用非常的广泛。ODBC是一种底层的访问技术,因此,ODBC API可以使用户应用程序从底层设置和控制数据库,完成一些高层数据库无法完成的功能,但是,由于ODBC数据库只能访问关系型数据库,使得利用ODBC很难访问对象数据库及其他非关系数据库。
MFC ODBC类。直接使用ODBC API编写应用程序要编写大量的代码,VC提供了MFC ODBC类,封装了ODBC API函数,使得MFC创建ODBC应用程序变得非常的简单。主要的ODBC类有以下几种
CDatabase类、CRecordSet类、CRecordView类、CDBException类、m_nRetCode\m_strError\m_strStateNativeOrigin等
MFC ODBC类在实际开发中应用最广,因为他功能丰富,操作相对简便。
MFC DAO(数据访问对象)
DAO提供了一种通过程序代码创建和操作数据库的机制,多个DAO构成了一种体系,在这个结构中,各个DAO对象协同工作。
MFC DAO是微软提供的用于访问Microsoft Jet 数据库文件(*.mdb)的强有力的数据库开发工具,它通过DAO封装。
DAO仅用来支持Acess数据库,应用范围相对较窄。
OLEDB是VC++数据库开发技术提供的新技术,它基于COM接口。因此,OLEDB对所有的文件系统,包括关系数据库和非关系数据库都提供了统一的接口。这些特性使得OLEDB技术比传统的数据库访问计数更加优越。与ODBC技术类似,OLEDB属于数据库访问技术的底层接口。
直接使用OLEDB数据库来设计应用程序需要大量的代码。在VC中提供了ATL模板,用于设计OLEDB数据应用程序和数据提供程序。OLEDB框架定义了3个基本类
数据提供程序 Data Provider\Consumer\Servive Provider.
ADO技术是基于OLEDB的访问接口,它继承了OLEDB的技术优点,并且ADO对OLEDB的接口做了封装,定义了ADO对象,使的程序开发得到了简化。ADO基于COM,提供编程语言可利用的对象,除了面向VC++,还提供面向其他各种开发工具的应用,如VB,VJ等。
阅读(...) 评论()本文主要介绍Visual C++数据库编程,包括数据库基础、数据库开发技术、使用ADO开..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Visual C++数据库编程
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 c语言源程序 的文章

 

随机推荐