zoukankan      html  css  js  c++  java
  • vs连接MySQL

    20:20:30 2019-08-05

    开始学习安装MySQL

    22:59:56 2019-08-05

    编码错误问题解决

    参考博客:https://www.cnblogs.com/Enceladus/p/11197971.html

    要用数据库 就得先安装(废话) 大佬们说的SQL Server、Oracle、Sybase、DB2我都没听过 只听过MySQL

    安装MySQL:https://blog.csdn.net/qq_35987486/article/details/84066304

     学习MySQL:W3School

    这里主要写下初步的使用

    点击加号

    过程中应该会让输入密码 就是在安装MySQL时 输入的密码(用户名默认为root)

    点击进入

     点击圈住的地方 设置自己数据库的名字 apply finish

    可以发现左下角 SCHEMAS的地方有了我们刚刚新建的数据库

    点击创建的数据库 点击Table 右键 creat table

    现在我们可以通过点击column name 下的白框来创建 我们需要的属性 

    当然了 table_name 也改成自己想要的名字(使用时发现 如果column没有属性 会出错)(os:没有属性。。。用数据库干啥)

     

    再看看数据类型 VARCHAR 就是字符串 INT表示整型 括号里的数字表示宽度

    再后面一列是圈起来的缩写

    PK表示Primary Key 主键

    NN是Not Null 不能为空 

    UQ Unique 表示不能重复

    B Binary 二进制

    UN Unsigned 整型

    AI: auto increment自增

    ZF: zero fill 值中最有意义的字节总为0,并且不保存

    附一张上面博客截图

    点击Apply

    刚刚我们设计是用UI来设计的 最后要学会直接用SQL语句来写

    接下来测试下

    在圈住的地方点击右键 选择 select rows-limit 1000(查询行数上限可改)

    接下来可以先看看 sql基本语句教程 找到我们需要的语句

    写完后点击圈主的地方 

    注意:我们选的id做为主键 不能重复插入一个相同的主键 会报错

    接下来连接vs与MySQL

    我下的MySQL是64位的 所以需要把debug 改为x64

    需要设置的部分:右键项目 选择属性

    选择c/c++ 附加包含目录 添加 C:Program FilesMySQLMySQL Server 8.0include(根据文件存放位置)

    选择链接器 附加库目录 添加 C:Program FilesMySQLMySQL Server 8.0lib(根据文件存放位置)

    选择连接器 选择输入 附加依赖项 添加:libmysql.lib(#pragma comment(lib, "libmysql.lib") 与这个效果一样)

    之后可以拿别人的代码改成自己的来试试

     1 #include <stdio.h> 
     2 #include <stdlib.h> 
     3 #include<Windows.h>
     4 #include<mysql.h>
     5 #include<iostream>
     6 #pragma comment(lib, "libmysql.lib")
     7 
     8 int main(void)
     9 {
    10     MYSQL mysql, * sock; //声明MySQL的句柄 
    11     const char* host = "127.0.0.1"; //因为是作为本机测试,所以填写的是本地IP 
    12     const char* user = "root"; //这里改为你的用户名,即连接MySQL的用户名 
    13     const char* passwd = ""; //这里改为你的用户密码 
    14     const char* db = "text"; //这里改为你要连接的数据库的名字,一个数据可能有几张表
    15     unsigned int port = 3306; //这是MySQL的服务器的端口,如果你没有修改过的话就是3306。 
    16     const char* unix_socket = NULL; //unix_socket这是unix下的,我在Windows下,所以就把它设置为NULL 
    17     unsigned long client_flag = 0; //这个参数一般为0 
    18 
    19     const char* i_query = "select * from datastudent"; //查询语句,从那个表中查询,这里后面没有;
    20     
    21 
    22     MYSQL_RES* result; //保存结果集的
    23     MYSQL_ROW row; //代表的是结果集中的一行 
    24                    //my_ulonglong row;
    25 
    26     mysql_init(&mysql); //连接之前必须使用这个函数来初始化 
    27     mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
    28     if ((sock = mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag)) == NULL) //连接MySQL 
    29     {
    30         printf("fail to connect mysql 
    ");
    31         fprintf(stderr, " %s
    ", mysql_error(&mysql));
    32         exit(1);
    33     }
    34     else
    35     {
    36         fprintf(stderr, "connect ok!!
    ");
    37     }
    38 
    39     if (mysql_query(&mysql, i_query) != 0) //如果连接成功,则开始查询 .成功返回0
    40     {
    41         fprintf(stderr, "fail to query!
    ");
    42         exit(1);
    43     }
    44     else
    45     {
    46         if ((result = mysql_store_result(&mysql)) == NULL) //保存查询的结果 
    47         {
    48             fprintf(stderr, "fail to store result!
    ");
    49             exit(1);
    50         }
    51         else
    52         {
    53             while ((row = mysql_fetch_row(result)) != NULL) //读取结果集中的数据,返回的是下一行。因为保存结果集时,当前的游标在第一行【之前】 
    54             {
    55                 printf("name is %s	", row[0]); //打印当前行的第一列的数据 
    56                 printf("id is %s	
    ", row[1]); //打印当前行的第二列的数据
    57                 printf("math is %s	
    ", row[2]);
    58                 printf("province is %s	
    ", row[3]);
    59                 //row = mysql_num_row(result);
    60                 //printf("%lu
    ", mysql_num_row(result));
    61             }
    62         }
    63 
    64     }
    65     mysql_free_result(result); //释放结果集 
    66     mysql_close(sock); //关闭连接 
    67     system("pause");
    68     exit(EXIT_SUCCESS);
    69 
    70 }
    View Code

    如果运行出现了找不到libmysql.dll 从C:Program FilesMySQLMySQL Server 8.0lib 中复制一份到c盘的windows文件下的System32

    同样遇到libeay32.dll 和ssleay32 找不到的问题也是这样的做法

    运行结果图

    如果输出中文乱码 改一下编码格式

    我的是在mysql_init(&mysql);后加上 mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"); 这样就改变了编码格式

  • 相关阅读:
    docker 服务器安装harbor
    docker win10 推送镜像问题
    docker win10 基本指令
    docker、docker-compose安装,卸载
    go 名词备注
    go 结构开发规范
    Java基础--day14
    Java基础--day12
    Java基础--day11
    算法笔记--数据结构--树与二叉树
  • 原文地址:https://www.cnblogs.com/57one/p/11306136.html
Copyright © 2011-2022 走看看