一、MySQL的安装

   Mysql的安装去官网下载就可以。。。最新的是5.7版本。。

二、VC6.0的设置

(1)打开VC6.中选0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的“Show directories for:”下拉列表中“Includefiles”,然后在中间列表框中添加你本地安装MySQL的include目录路径。如图:

(2)在上面说到的“Show directories for:”下拉列表中选中“Library files”,然后添加你本地安装MySQL的Lib目录路径。如图:

 **这里要说明一下:细心的人会发现我的这个目录和上一个图中的不一样,这是因为这个错误:libmysql.lib : fatal error LNK1113: invalid machine 无效的服务器

   这是因为vc开发的是32位的程序,而mysql数据库是64位导致的,你用32位的程序去操作64位的数据库肯定会出错,我在下一篇博文中将详细说明怎么解决。

(3)在“Project settings->Link:Object/library modules”里面添加“libmysql.lib”。
        

(4)建议将“libmySQL.lib、libmySQL.dll”拷到你所建的工程的目录下。

这两个文件在D:\Mysql\lib目录下。

三、编程实现

1. 一个简单的小程序,看看是否能连接成功。。。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <windows.h>
#include <mysql.h>
 
int main()
{
 
       MYSQL mysql;
       mysql_init(&mysql); //初始化mysql结构
 
       if(!mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0))
              printf("\n连接数据库时发生错误!\n");
       else
              printf("\n连接数据库成功!\n");
 
       mysql_close(&mysql); //释放数据库
   
       return 0;
}

  mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0)//myuser是我的用户名,“123456”是密码,“student_db”是数据库,3306是端口号

2.实现查询小程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// test.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <windows.h>
#include "StdAfx.h"
 
#include <winsock.h> 
#include <iostream> 
#include <string> 
#include <mysql.h> 
using namespace std; 
//不需要单步调试的就注释掉 
//#define STEPBYSTEP 
   
void pause(){ 
   
    #ifdef STEPBYSTEP 
        system("pause"); 
    #endif 
} 
void writeToFile(const char *s) 
{ 
   
     FILE *fp=fopen("info.txt","rw"); 
     fprintf(fp,s); 
     fclose(fp); 
   
} 
 /* int main()
 
{
 
       MYSQL mysql;
       mysql_init(&mysql); //初始化mysql结构
 
       if(!mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0))
              printf("\n连接数据库时发生错误!\n");
       else
              printf("\n连接数据库成功!\n");
 
       mysql_close(&mysql); //释放数据库
   
       return 0;
}*/
int main(int argc, char* argv[]){ 
   
    cout<<"start...."<<endl; 
    pause(); 
    MYSQL mysql; 
    if(0==mysql_library_init(0,NULL,NULL)) 
    { 
        cout<<"mysql_library_init succeed"<<endl; 
   
    }else{ 
        cout<<"mysql_library_init failed"<<endl; 
        return -1; 
    } 
    pause(); 
    if(NULL!=mysql_init(&mysql)) 
    { 
   
        cout<<"mysql_init succeed"<<endl; 
    }else{ 
        cout<<"mysql_init failed"<<endl; 
        return -1; 
    } 
    pause(); 
    if(0==mysql_options(&mysql,MYSQL_SET_CHARSET_NAME,"gb2312")) 
    { 
   
        cout<<"mysql_option succeed"<<endl; 
    }else{ 
        cout<<"mysql_option failed"<<endl; 
        return -1; 
    } 
    pause(); 
   
    if(NULL!=mysql_real_connect(&mysql,"localhost","myuser","123456","student_db",3306,NULL,0)) 
    { 
   
        cout<<"mysql_real_connect succeed"<<endl; 
    }else{ 
        cout<<"mysql_real_connect failed"<<endl; 
        return -1; 
    } 
    pause(); 
    string sql; 
     
    sql="select * from sgroup"; 
    MYSQL_RES *result=NULL; 
    if(0==mysql_query(&mysql,sql.c_str())) 
    { 
   
            cout<<"mysql_query select succeed"<<endl; 
            result=mysql_store_result(&mysql); 
            int rowcount=mysql_num_rows(result); 
            cout<<"row count:"<<rowcount<<endl; 
            unsigned int fieldcount=mysql_num_fields(result); 
            MYSQL_FIELD *field=NULL; 
            for(unsigned int i=0;i<fieldcount;i++) 
            { 
   
                field=mysql_fetch_field_direct(result,i); 
                cout<<field->name<<"\t\t"; 
            } 
            cout<<endl; 
            MYSQL_ROW row=NULL; 
            row=mysql_fetch_row(result); 
            while(NULL!=row) 
            { 
   
                for(int i=0;i<fieldcount;i++){ 
   
                    cout<<row[i]<<"\t\t"; 
   
                } 
                cout<<endl; 
                row=mysql_fetch_row(result); 
   
            } 
    }else{ 
   
            cout<<"mysql_query select data failed"<<endl; 
            mysql_close(&mysql); 
            return -1; 
    } 
    pause(); 
    /*sql="drop table user_info"; 
    if(0==mysql_query(&mysql,sql.c_str())) 
    { 
   
            cout<<"mysql_query drop table succeed"<<endl; 
    }else{ 
            cout<<"mysql_query drop table failed"<<endl; 
            mysql_close(&mysql); 
            return -1; 
   
    }  */
    mysql_free_result(result); 
    mysql_close(&mysql); 
    mysql_server_end(); 
   
   
    system("pause"); 
    return 0; 
}

  运行结果:

至此连接成功。。哈哈。。

补充:c/c++连接数据库的方式不止一种,上面介绍的是通过MySQL自身提供C语言形式的API来进行数据库连接。除此之外还可以用connector c++来进行连接。不同的连接方式在效率、稳定性方面存在差异。

参考原文传送门:https://www.cnblogs.com/jycboy/p/5170637.html

VC++6.0连接MySQL数据库(MySQL API)的更多相关文章

  1. VC++6.0连接Access数据库

    建立一个连接数据库的类: 1.头文件:ADOConn.h #import "C:\Program Files\Common Files\System\ado\msado15.dll" ...

  2. java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据

    package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...

  3. 第二百八十六节,MySQL数据库-MySQL事务操作(回滚)

    MySQL数据库-MySQL事务操作(回滚) 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 举例:有这样一张表 从表里可以看出张 ...

  4. 第二百八十三节,MySQL数据库-MySQL存储过程

    MySQL数据库-MySQL存储过程 MySQL存储过程,也就是有点像MySQL函数,但是他与MySQL函数是有区别的,后面会讲到函数,所以注意区分 注意:函数与存储过程的区别 存储过程是:CREAT ...

  5. 第二百八十五节,MySQL数据库-MySQL函数

    MySQL数据库-MySQL函数 1.MySQL内置函数 SELECT执行函数,后面跟要执行的函数 CHAR_LENGTH(str)函数:返回字符串的字符长度 -- CHAR_LENGTH(str)函 ...

  6. MySQL数据库”mysql SQL Error:1146,SQLState:42S02 “解决方法

    项目在开发的时候在Mac平台下开发的,开发完了之后在LINUX环境上部署好之后,运行时MySQL数据库报错,提示为某个表不存在之类的错误信息,后来修改了MySQL的配置文件将大小写敏感去掉,问题解决. ...

  7. 第二百八十四节,MySQL数据库-MySQL触发器

    MySQL数据库-MySQL触发器 对某个表进行[增/删/改]操作的前后如果希望触发某个特定的行为时,可以使用触发器,触发器用于定制用户对表的行进行[增/删/改]前后的行为. 1.创建触发器基本语法 ...

  8. 第二百八十二节,MySQL数据库-MySQL视图

    MySQL数据库-MySQL视图 1.视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 2.也 ...

  9. Robomongo 0.9.0 连接mongo数据库时,提示连接失败 的解决方案

    Robomongo 0.9.0 连接mongo数据库时,提示连接失败.(IP和端口号确定是对的) 基本注意点: 1.mongodb服务打开,打开时,指定端口号,默认为27017,使用默认值,则不用指定 ...

随机推荐

  1. 自己动手写CPU(基于FPGA与Verilog)

    大三上学期开展了数字系统设计的课程,下学期便要求自己写一个单周期CPU和一个多周期CPU,既然要学,就记录一下学习的过程. CPU--中央处理器,顾名思义,是计算机中最重要的一部分,功能就是周而复始地 ...

  2. js 从一个函数中传递值到另一个函数

    一个函数的调用大家都会用 我今天在调接口的时候突然发现需要引用个另一个函数中拿到的值 举个栗子 刚开始 我是这样调用的 alert弹出的是 hello world . 但是我a函数内部还有一个函数 画 ...

  3. github提交代码到服务器的方法

    第一种情况,没有冲突:1.git add .//进入到center的项目下将本地文件打包的意思2.git pull origin dev//将服务器的代码下载到本地如果是最新的会提示Already u ...

  4. Python内置函数(12)——str

    英文文档: class str(object='') class str(object=b'', encoding='utf-8', errors='strict') Return a string  ...

  5. GIT入门笔记(1)- Git的基本概念

    一.概念和定义 1.git是什么 许多人习惯用复制整个项目目录的方式来保存不同的项目版本,或许还会改名加上备份时间以示区别.这么做唯一的好处就是简单.不过坏处也不少:有时候会混淆所在的工作目录,一旦弄 ...

  6. apigw鉴权分析(1-1)阿里数加 - 鉴权方式分析

    一.访问方式 1.访问阿里云首页 https://www.aliyun.com/?utm_medium=text&utm_source=bdbrand&utm_campaign=bdb ...

  7. linux centos6.8 下安装mysql 步骤

    安装环境:vmware12.centos6.8.centos中配置阿里云数据元 1.下载mysql 运行: sudo yum -y install mysql-server 如果下载失败,可以卸载重新 ...

  8. 2018 php的flush和ob_flush不起作用 整理解决

    2018 php的flush和ob_flush不起作用 整理解决成功解决. 要点 : 使用函数 str_repeat2处配置:检查php.ini.Nginx 中有下面两个设置使用方式:echo str ...

  9. 编程基础学习JS的入门教程

    将JavaScript 插入网页的方法 使用<script>标签在网页中插入Javascript代码. 插入JavaScript 与在网页中插入CSS的方式相似.使用下面的代码可以在网页中 ...

  10. ABP公共结构

    1.ABP依赖注入 维基百科说:“依赖注入是一种软件设计模式,指一个或多个依赖(或服务)被注入,或通过引用传递,传入一个依赖对象(或客户端)并成为客户状态的一部分.模式通过自身的行为分离了客户依赖的创 ...