百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

MySQL数据库:使用mysql(Ubuntu)(mysql连接mysql数据库的详细步骤)

toyiye 2024-07-02 03:03 17 浏览 0 评论


一、MySQL安装
(一)安装mysql服务端
sudo apt-get install mysql-server
(二)安装图形开发界面
sudo apt-get install mysql-workbench
(三)安装mysql开发包
sudo apt-get install libmysqlclient-dev


更多c/c++ Linux服务器高阶知识、电子书籍、视频等等请后台私信【架构】获取

知识点有C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等等。

二、API
(一)MYSQL

该结构代表1个数据库连接的句柄。几乎所有的MySQL函数均使用它。

(二)MYSQL_RES

该结构代表返回行的查询结果(SELECT, SHOW, DESCRIBE,EXPLAIN)。

(三)MYSQL_ROW

这是1行数据的“类型安全”表示。它目前是按照计数字节字符串的数组实施的。(如果字段值可能包含二进制数据,不能将其当作由Null终结的字符串对待,这是因为这类值可能会包含Null字节)。行是通过调用mysql_fetch_row()获得的。

(四)MYSQL_FIELD

该结构包含关于字段的信息,如字段名、类型和大小。通过重复调用mysql_fetch_field(),可为每个字段获得MYSQL_FIELD结构。字段值不是该结构的组成部分,它们包含在MYSQL_ROW结构中。

(五)MYSQL_FIELD_OFFSET

这是MySQL字段列表偏移量的“类型安全”表示(由mysql_field_seek()使用)。偏移量是行内的字段编号,从0开始。

三、mysql常用API
(一)mysql_init()
  • 语法:
MYSQL *mysql_init(MYSQL *mysql)
  • 描述:
    分配或初始化与mysql_real_connect()相适应的MYSQL对象。如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
  • 返回值:
    初始化的MYSQL*句柄。如果有足够内存以分配新的对象,返回NULL。
(二)mysql_real_connect()
  • 语法:
MYSQL *mysql_real_connect(
MYSQL *mysql, 
const char *host, 
const char *user, 
const char *passwd, 
const char *db, 
unsigned int port, 
const char *unix_socket, 
unsigned long client_flag
)
  • 描述:
    mysql_real_connect()尝试与运行在主机上的MySQL数据库引擎建立连接。在你能够执行需要有效MySQL连接句柄结构的任何其他API函数之前,mysql_real_connect()必须成功完成。关闭连接。
    如果“port”不是0,其值将用作TCP/IP连接的端口号。
    如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道。
    注意:“host”参数决定了连接的类型。client_flag的值通常为0。
  • 返回值:
    如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。
(三)mysql_real_query()
  • 语法:
int mysql_real_query(
MYSQL *mysql, 
const char *query, 
unsigned long length
)
  • 描述:
    执行由“query”指向的SQL查询,它应是字符串长度字节“long”。
    正常情况下,字符串必须包含1条SQL语句,而且不应为语句添加终结分号(‘;’)或“\g”。如果允许多语句执行,字符串可包含由分号隔开的多条语句。对于包含二进制数据的查询,必须使用mysql_real_query()而不是mysql_query()。
  • 返回值:
    如果查询成功,返回0。如果出现错误,返回非0值。
(四)mysql_store_result()
  • 语法:
MYSQL_RES *mysql_store_result(MYSQL *mysql)
  • 描述:
    对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),必须调用mysql_store_result()或mysql_use_result() 。mysql_store_result()将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中。调用mysql_num_rows()可以找出结果集中的行数。可以调用mysql_fetch_row()来获取结果集中的行,或调用mysql_row_seek()和mysql_row_tell()来获取或设置结果集中的当前行位置。
  • 返回值:
    具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。
(五)mysql_use_result()
  • 语法:
MYSQL_RES *mysql_use_result(MYSQL *mysql)
  • 描述:
    mysql_use_result()将初始化结果集检索,但并不像mysql_store_result()那样将结果集实际读取到客户端。它必须通过对mysql_fetch_row()的调用,对每一行分别进行检索。这将直接从服务器读取结果,而不会将其保存在临时表或本地缓冲区内,与mysql_store_result()相比,速度更快而且使用的内存也更少。使用mysql_use_result()时,必须执行mysql_fetch_row(),直至返回NULL值。
  • 返回值:
    具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。
(六)mysql_fetch_row()
  • 语法:
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
  • 描述:
    检索结果集的下一行。如果行中保存了调用mysql_fetch_row()返回的值,将按照row[0]到row[mysql_num_fields(result)-1],访问这些值的指针。
  • 返回值:
    下一行的MYSQL_ROW结构。如果没有更多要检索的行或出现了错误,返回NULL。
(七)mysql_free_result()
  • 语法:
void mysql_free_result(MYSQL_RES *result)
  • 描述:
    释放由mysql_store_result()、mysql_use_result()、mysql_list_dbs()等为结果集分配的内存。完成对结果集的操作后,必须调用mysql_free_result()释放结果集使用的内存。
  • 返回值:
    无 。
(八)mysql_error()
  • 语法:
const char *mysql_error(MYSQL *mysql)
  • 描述:
    对于由mysql指定的连接,对于失败的最近调用的API函数,mysql_error()返回包含错误消息的、由Null终结的字符串
    如果成功,,所有向服务器请求信息的函数均会复位mysql_error()。
  • 返回值:
    返回描述错误的、由Null终结的字符串。如果未出现错误,返回空
    字符串。
(九)mysql_close()
  • 语法:
void mysql_close(MYSQL *mysql)
  • 描述:
    关闭前面打开的连接。如果句柄是由mysql_init()或mysql_connect()自动分配的,mysql_close()还将解除分配由mysql指向的连接句柄。
  • 返回值:
    无 。
四、一个简单的C++程序
#include <mysql/mysql.h>
#include <iostream>
using namespace std;
MYSQL *conn;MYSQL_RES *res;MYSQL_ROW row;
int main(int argc,char **argv)
{
    const char *sever = "localhost"; //主机
    const char *user = "root"; //用户名
    const char *password = "XXXXXX"; //用户密码
    const char *database = "database_name"; //数据库名称
    conn = mysql_init(NULL);
    if(!mysql_real_connect(conn,sever,user,password,database,0,NULL,0))
    {
        cout << "connect error" << endl;
        return 0;
    }
    mysql_set_character_set(conn,"utf8");
    if(mysql_query(conn,"select * from emp"))
    {
        cout << "query error" << endl;
        return 0;
    }
    //res = mysql_store_result(conn);
    res = mysql_use_result(conn);
    while((row = mysql_fetch_row(res)) != NULL)
    {
        cout << row[0] << '\t' << row[1] << '\t' << row[2] << '\t' 
             << row[3] << '\t' << row[4] << endl;
    }
    mysql_free_result(res);
    mysql_close(conn);
    return 0;
}

显示结果:


相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码