前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在VC6.0中连接mysql数据库的方法实例

在VC6.0中连接mysql数据库的方法实例

作者头像
ZONGLYN
发布2019-08-08 11:42:01
2.5K0
发布2019-08-08 11:42:01
举报
文章被收录于专栏:程序萌部落

(本文年代久远,请谨慎阅读)最近用JAVA写程序,在连接数据库并操作上感觉还是较其他语言简单多了,在这方面C/C++就显得有点繁杂,不过也并非难事。 首先就是要清除mysql提供的关于C的API,连接:http://dev.mysql.com/doc/refman/5.1/zh/apis.html

API

内容包括以下,用到的大概前几项,主要是数据类型,函数概括,函数描述

代码语言:javascript
复制
25.2. MySQL C API
25.2.1. C API数据类型
25.2.2. C API函数概述
25.2.3. C API函数描述
25.2.4. C API预处理语句
25.2.5. C API预处理语句的数据类型
25.2.6. C API预处理语句函数概述
25.2.7. C API预处理语句函数描述
25.2.8. C API预处理语句方面的问题
25.2.9. 多查询执行的C API处理
25.2.10. 日期和时间值的C API处理
25.2.11. C API线程函数介绍
25.2.12. C API嵌入式服务器函数介绍
25.2.13. 使用C API时的常见问题
25.2.14. 创建客户端程序
25.2.15. 如何生成线程式客户端

以上内容非常全面,是mysql官方资料,要自己多看多了解,学会查询即可。 知道了上面的内容,那自己写个连接代码也是很容易的,主要就是几个异常的检测以及连接操作,具体的API上面目录里都有详细讲解,在此只贴出代码:

必要的头文件包括以下:

代码语言:javascript
复制
#include <winsock.h>  //最好放在首位,位置关系会导致错误,mysql.h
#include <mysql.h>
#include <stdio.h>
#include <cstring>
#include <string>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
using namespace std;
连接及操作的代码实现:
MYSQL mydata;
if (0 == mysql_library_init(0, NULL, NULL)) {cout << "mysql_library_init() succeed" << endl;} 
else { cout << "mysql_library_init() failed" << endl;  return -1;}
if (NULL != mysql_init(&mydata)) { cout << "mysql_init() succeed" << endl;}
else { cout << "mysql_init() failed" << endl;  return -1;}
if (0 == mysql_options(&mydata, MYSQL_SET_CHARSET_NAME, "gbk")) 
{cout << "mysql_options() succeed" << endl; }  return -1;  }
if(NULL!=mysql_real_connect(&mydata,"localhost","root","","cap",3306,NULL,0))  //更改项
{cout << "mysql_real_connect() succeed" << endl;}       
else { cout << "mysql_real_connect() failed" << endl;return -1;  }
///*****************************/  生成数据,可忽略不看  /***************/
 mysql_query(&mydata,"truncate table n_e_w;");
 string sqlstr;   
 sqlstr += "insert into n_e_w "; 
 sqlstr += "set input=(SELECT c_name FROM concept ORDER BY RAND() LIMIT 1),";
 sqlstr += "output=(SELECT c_name FROM concept ORDER BY RAND() LIMIT 1),";
 sqlstr += "beforer=(SELECT c_name FROM concept ORDER BY RAND() LIMIT 1),";
 sqlstr += "afterr=(SELECT c_name FROM concept ORDER BY RAND() LIMIT 1),";
 sqlstr += "s_one=(SELECT s FROM s_table ORDER BY RAND() LIMIT 1),";
 sqlstr += "s_two=(SELECT s FROM s_table ORDER BY RAND() LIMIT 1),";
 sqlstr += "s_three=(SELECT s FROM s_table ORDER BY RAND() LIMIT 1);";
 for(int t = 0; t < 30 ; t++)mysql_query(&mydata,sqlstr.c_str()); 
//******************************/  获得数据,存到traindata  /**************/
MYSQL_RES *result = NULL;
mysql_query(&mydata,"SELECT * FROM n_e_w");
result = mysql_store_result(&mydata); //取得并打印行数
int rowcount = mysql_num_rows(result);
unsigned int fieldcount = mysql_num_fields(result);  //取得并打印各字段的名称
MYSQL_ROW row = NULL;
row = mysql_fetch_row(result);	    
for(int j=0;j<rowcount;j++)
{ 
	 for(int i = 0; i < fieldcount-1; i++)
	 {
		traindata[j][i] = row[i];
		//cout<<"整个结果集显示:"<<traindata[j][i] <<"\t";
	 }	    	 		
                row = mysql_fetch_row(result);
}	  	  
   //for(int ii=0;ii<DEFINE_COUNT;ii++) cout<<traindata[ii][1]<<endl;
   mysql_free_result(result) ;
mysql_close(&mydata);
mysql_server_end();

上述内容只是简单的建立连接后查询内容,其中只在建立连接部分做了异常判别处理,其实还有很多工作没有做,比如未涉及的创建表,删除表等等操作,其都有对应的异常判别的API函数,通过IF条件判断,可以对创建不成功或删除不成功等异常情况予以显式输出,从而完善代码。

其余配置

以上是代码书写的工作,其实在书写代码之前,要用C++连(本人用的VC6.0)数据库,还要在VC中做相应的配置工作:

  1. 打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中选中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径(X:...\include)。
  2. 在“Show directories for:”下拉列表中选中“Library files”,然后添加本地安装MySQL的Lib目录路径。Lib目录下还有debug和opt两个目录,建议选debug(X:...\lib\debug)。
  3. 在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。
  4. 在程序开头的写法,具体参照上文中代码。 注:#include “winsock.h”一定要写在#include “mysql.h”的前面,否则出错。
  5. 将“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目录下。

到此,完成配置后,即可进行连接并对数据库进行操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2014-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • API
  • 其余配置
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档