C++连接mysql及遇到的相关问题

最近接触了很多数据库的东西,本来是一直接触的是sql server,不过由于项目需要就开始对mysql进行了连接。下面就让我这个菜鸟浅谈下经验吧。

对于C++连接mysql,我不太喜欢多下载一个软件mysqlodbc,所以采用的是通过mysql自己的API函数进行连接

1、使用API的方式连接,需要加载mysql的头文件和lib文件。

在VS2010的附加包含目录中添加\MySQL\MySQL Server 5.1\include。在安装MySql的目录下找。 把libmysql.dll和libmysql.lib文件拷贝到所建的工程目录下。然后在头文件里包含以下内容:

  1. //mysql所需的头文件和库文件
  2. #include "winsock.h"
  3. #include "mysql.h"
  4. #pragma comment(lib,"libmySQL.lib")

2、进行编码

(1)连接mysql数据库

头文件里定义数据源指针 MYSQL m_sqlCon;

//连接MySql数据库

  1. try
  2. {
  3. mysql_init(&m_sqlCon);
  4. // localhost:服务器 root为账号密码 test为数据库名 3306为端口
  5. if(!mysql_real_connect(&m_sqlCon, "localhost","root","root","test",3306,NULL,0))
  6. {
  7. AfxMessageBox(_T("数据库连接失败!"));
  8. return FALSE;
  9. }
  10. return TRUE;
  11. }
  12. catch (...)
  13. {
  14. return FALSE;
  15. }

(2)关闭数据库

  1. mysql_close(&m_sqlCon);

(3)创建表

  1. char* pQuery = "create table if not exists DS_Building( ID VARCHAR(10),Name VARCHAR(255),Descs VARCHAR(255),PRIMARY KEY (ID))"
  2. if(mysql_real_query(&m_sqlCon,pQuery,(UINT)strlen(pQuery))!=0)
  3. {
  4. const char* pCh = mysql_error(&m_sqlCon);
  5. return FALSE;
  6. }

附MySQL的API接口:

    1. mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。
    2. mysql_close() 关闭一个服务器连接。
    3. mysql_connect() 连接一个MySQL服务器。该函数不推荐;使用mysql_real_connect()代替。
    4. mysql_change_user() 改变在一个打开的连接上的用户和数据库。
    5. mysql_create_db() 创建一个数据库。该函数不推荐;而使用SQL命令CREATE DATABASE。
    6. mysql_data_seek() 在一个查询结果集合中搜寻一任意行。
    7. mysql_debug() 用给定字符串做一个DBUG_PUSH。
    8. mysql_drop_db() 抛弃一个数据库。该函数不推荐;而使用SQL命令DROP DATABASE。
    9. mysql_dump_debug_info() 让服务器将调试信息写入日志文件。
    10. mysql_eof() 确定是否已经读到一个结果集合的最后一行。这功能被反对; mysql_errno()或mysql_error()可以相反被使用。
    11. mysql_errno() 返回最近被调用的MySQL函数的出错编号。
    12. mysql_error() 返回最近被调用的MySQL函数的出错消息。
    13. mysql_escape_string() 用在SQL语句中的字符串的转义特殊字符。
    14. mysql_fetch_field() 返回下一个表字段的类型。
    15. mysql_fetch_field_direct () 返回一个表字段的类型,给出一个字段编号。
    16. mysql_fetch_fields() 返回一个所有字段结构的数组。
    17. mysql_fetch_lengths() 返回当前行中所有列的长度。
    18. mysql_fetch_row() 从结果集合中取得下一行。
    19. mysql_field_seek() 把列光标放在一个指定的列上。
    20. mysql_field_count() 返回最近查询的结果列的数量。
    21. mysql_field_tell() 返回用于最后一个mysql_fetch_field()的字段光标的位置。
    22. mysql_free_result() 释放一个结果集合使用的内存。
    23. mysql_get_client_info() 返回客户版本信息。
    24. mysql_get_host_info() 返回一个描述连接的字符串。
    25. mysql_get_proto_info() 返回连接使用的协议版本。
    26. mysql_get_server_info() 返回服务器版本号。
    27. mysql_info() 返回关于最近执行得查询的信息。
    28. mysql_init() 获得或初始化一个MYSQL结构。
    29. mysql_insert_id() 返回有前一个查询为一个AUTO_INCREMENT列生成的ID。
    30. mysql_kill() 杀死一个给定的线程。
    31. mysql_list_dbs() 返回匹配一个简单的正则表达式的数据库名。
    32. mysql_list_fields() 返回匹配一个简单的正则表达式的列名。
    33. mysql_list_processes() 返回当前服务器线程的一张表。
    34. mysql_list_tables() 返回匹配一个简单的正则表达式的表名。
    35. mysql_num_fields() 返回一个结果集合重的列的数量。
    36. mysql_num_rows() 返回一个结果集合中的行的数量。
    37. mysql_options() 设置对mysql_connect()的连接选项。
    38. mysql_ping() 检查对服务器的连接是否正在工作,必要时重新连接。
    39. mysql_query() 执行指定为一个空结尾的字符串的SQL查询。
    40. mysql_real_connect() 连接一个MySQL服务器。
    41. mysql_real_query() 执行指定为带计数的字符串的SQL查询。
    42. mysql_reload() 告诉服务器重装授权表。
    43. mysql_row_seek() 搜索在结果集合中的行,使用从mysql_row_tell()返回的值。
    44. mysql_row_tell() 返回行光标位置。
    45. mysql_select_db() 连接一个数据库。
    46. mysql_shutdown() 关掉数据库服务器。
    47. mysql_stat() 返回作为字符串的服务器状态。
    48. mysql_store_result() 检索一个完整的结果集合给客户。
    49. mysql_thread_id() 返回当前线程的ID。
    50. mysql_use_result() 初始化一个一行一行地结果集合的检索。

所遇到的问题:

刚开始我用VS2015连接mysql,发现一直出现无法解析外部符号这种错误,找了很久看了链接器那些发现没有什么错啊。后来找了很久发现是因为VS默认的运行平台是32位的,而我的mysql是64位.对于这种你只需要在项目属性的配置管理中把运行平台改为x64即可。当然,也可以下一个mysql32位的Lib和dll。

转载请注明地址:http://www.cnblogs.com/fnlingnzb-learner/p/5823466.html,谢谢。

时间: 2025-01-25 08:27:49

C++连接mysql及遇到的相关问题的相关文章

python3.6+RF连接mysql

接口自动化中会遇到有操作数据库的动作 目录 1.安装第三方库 2.安装pymysql 3.数据库操作 1.安装第三方库 使用在线安装:pip install robotframework_databaselibrary -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn 2.安装pymysql 使用在线安装方式安装:pip install pymysql -i https://p

Hibernate连接MySQL数据库乱码相关问题

1.查看MySQL字符编码 >show variables like 'character%'; #执行编码显示 其中character_set_client,character_set_results,character_set_connection三个运行变量是造成乱码的关键 2.修改MySQL编码格式为UTF8 编辑my.ini,(注意:不是utf-8,也要注意大小写) 找到客户端配置[client] 在下面添加 ### 默认字符集为utf8 default-character-set=u

Mac系统下虚拟机VMware Fusion下Win10如何通过Navcat连接Mysql 5.7

最近一直在折腾Mac系统,原先对Mac使用也不是很熟悉,所以安装过程中出现了很多问题.为了以后查阅方便,当然也为了使得和我一样的小白少踩一些坑, 所以就记录一下这些问题. 首先说一下VMware Fusion这个虚拟机软件吧.我下载的官方最新的版本8.5.7.然后开始安装,安装比较容易.最麻烦的就是如何安装WIn10系统呢?一开始我采取按部就班的方法,通过Mac自带的浏览器Safari去下载Win10 ISO的文件.结果速度太让人崩溃了,非常慢.后来我尝试把ISO通过百度网盘离线下载的方式先下载

java连接mysql的过程

今天突然心血来潮,想要用java连接mysql,记得以前是在vs2010的环境下用C#连接sql sever,其实他们的方法都差不多. 现在就可以简单的介绍下java如何连接mysql 第一步,设计mysql的数据库,设计数据库的时候特别要注意,数据库名是xsxx,表名字是xs.注意在设置字符的时候一定要选用utf8,不然就会以你不懂的形式出现. 第二步:在esclip中新建项目,项目名称是TestJDBC,新建class名称为TestJDBC,添加引用项目文件 第三步:项目中的相关代码: --

通过java连接mysql总结

简介:通过java连接mysql需要用到JDBC驱动.JDBC驱动安装在mysql-client客户端,mysql-server服务端不需要安装. 数据库安装初始化略.测试用到的命令: 1.创建测试用库,表,字段: create database score; use score; create table score(id nvarchar(10),stu_id nvarchar(10),c_name nvarchar(10),grade nvarchar(10)); insert into

连接mysql报错:error 2003 (hy000):can't connect to mysql server on 'localhost' (10061)

一.mysql 的bin目录下有个MySQLInstanceConfig.exe,运行就可以进行创建数据库实例,创建实例时也可以生成windows 服务,把服务设置成自动启动就可以了 二.安装在D盘的discuzz!打开后出现上述错误,请问应如何处理?winmysqladmin已经启动,但三色树上有一个小红点如果出现"ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)",说明你的MySQL还没有启动.解决办法

java连接MySQL数据库

插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和服务器端交互,这个我之前没做过,因此接下来的时间里会陆续更新这一些列的博客,记录学习的点滴.第一篇主要是java读取mysql数据库文件.安装及配置文件稍后会上传到我的百度网盘供大家下载.其他的介绍在网上都可以找到相关的博客,下面直接给出源代码. mysql建立一个名为"vge_whu"的数

navicat软件设置连接mysql数据库

navicat软件设置连接mysql数据库 适用范围及演示使用工具 适用范围:mysql所有系列(含Linux和Windows系统下的mysql) 演示使用工具:Navicat 8.0 MySQL 演示系统:Windows2003系统 navicat连接mysql数据库设置方法/步骤 第1步:下载并安装navicat软件,本成功安装到自己电脑中,安装成功后打开开始菜单组中的navicat菜单下的"Navicat for MySQL"并单击打开. 第2步:单击navicat软件左上角中的

13.1 设置更改root密码;13.2 连接MySQL;13.3 MySQL常用命令

扩展 : mysql5.7 root密码更改 http://www.apelearn.com/bbs/thread-7289-1-1.html myisam 和innodb引擎对比 http://www.pureweber.com/article/myisam-vs-innodb/ mysql 配置详解: http://blog.linuxeye.com/379.html mysql调优: http://www.aminglinux.com/bbs/thread-5758-1-1.html 同学