首页 > 数据库 >Linux - 操作mysql数据库

Linux - 操作mysql数据库

时间:2023-06-28 15:44:55浏览次数:48  
标签:printf mysql 数据库 Linux DB MYSQL include

运行环境

Ubuntu20.04 虚拟机

Mysql 8.0 API libmysqlclient-dev

gcc 9.4.0

一、准备工作

1、在Ubuntu上准备mysql开发环境

更新软件源

sudo apt update

安装libmysqlclient-dev,这个lib库是Linux下C/C++连接mysql的客户端

sudo apt install libmysqlclient-dev

2、创建测试数据库与表

创建一个名为C_DB的数据库,在库中建立一张名为C_TBL的表

CREATE DATABASE C_DB;
USE C_DB;
CREATE TABLE C_TBL(
ID INT PRIMARY KEY AUTO_INCREMENT,#主键且自增
NAME VARCHAR(32),
SEX VARCHAR(8)
);

二、建立与mysql的连接

1、在C文件中引入头文件

在C文件中引入头文件#inlude <mysql.h>通过MYSQL mysql;创建一个mysql结构体对象MYSQL结构体定义在mysql.h

#include<mysql.h>
#include<stdio.h>
#include<string.h>

int main()
{
	 MYSQL mysql;
}

2、初始化mysql与数据库的通道

mysql_init函数初始化失败会返回NULL
mysql_error是mysql API提供的标准错误

 

if(mysql_init(&mysql) == NULL)
{
    printf("%s",mysql_error(&mysql));
    return -1;
}

 

3、与mysql建立真实连接

先在文件最前面定义一些宏,方便后面使用

#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>


int main()
{

	//固定不变的
	MYSQL mysql;    //一个数据库结构体  
	MYSQL_RES* res; //一个结果集结构体
	MYSQL_ROW row; //char** 二维数据,存放一条条记录

	//初始化数据库
	mysql_init(&mysql);

	//设置编码方式
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	//连接数据库                    //ip地址	   //用户名 //密码       //数据库名
	if (mysql_real_connect(&mysql, "192.168.237.131", "root", "123456", "C_DB", 3306, NULL, 0))
	{
		printf("数据库连接成功!\n");
	}
	else
	{
		printf("错误原因:%s\n", mysql_error(&mysql));
		printf("数据库连接失败!\n");
		exit(-1);
	}
	return 0;
}

将上述代码保存为test_MySql.c。上述代码中,我们需要包含mysql.h头文件来使用mysql提供的API对MySQL进行操作。程序写好了,编译过程需要加入需要的链接信息:

sudo gcc -I/usr/include/mysql test_MySql.c -L/usr/lib/mysql -lmysqlclient -o test_mysql.o

好了,程序成功编译,运行一下试试吧:

 

标签:printf,mysql,数据库,Linux,DB,MYSQL,include
From: https://www.cnblogs.com/zhuchunlin/p/17511551.html

相关文章

  • Linux curl命令详解
    命令:curl在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。语法:#curl[option][url]常见参数:-A/--user-agent<string>设置用户代理......
  • linux http嗅探工具 httpry
    httpry是http版的tcpdump,它提供了实时的数据抓取、展示,也可以写入到文件,以供后续分析,相比较tcpdump,它抓取展示http更加直观。通常我们会抓取请求并写入文件httpry-i网卡名字-mmethod-b输出文件名字使用ifconfig命令查看网卡名字,如果不指定,默认是第一个网卡。-m指定http请求......
  • mysql workbench 从模型导出表结构
    前言本教程,主要讲述,利用mysqlworkbench从数据库模型导出建表语句mysqlworkbench导出建表语句概述mysql生成数据库模型从数据库模型生成建表语句首先,浏览数据库模型导出建表语句导出一个库的建表语句在EER视图中,File—>Export—->forwarengineersqlcreatescript导出整个模型......
  • mysql collation 校对规则 utf8_general_ci 与 utf8_unicode_ci的区别
    援引官方文档 MysqldocumentForanyUnicodecharacterset,operationsperformedusingthe xxx_general_ci collationarefasterthanthoseforthe xxx_unicode_ci collation.Forexample,comparisonsforthe utf8_general_ci collationarefaster,butslightly......
  • mysql workbench 快捷键
    mysqlworkbench常用快捷键新建tab(newtab)ctrl+t执行当前语句(executecurrentstatement)ctrl+enter执行全部或选中的语句(executeallorselection)ctrl+shift+enter查看执行计划(explaincurrentstatement)ctrl+alt+x注释--加空格,如–select*fromt;以上快捷......
  • 在linux上启动arthas报“Can not find java process”
    发生背景完整报错信息:[***@localhost~]$java-jararthas-boot.jar[INFO]JAVA_HOME:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64/jre[INFO]arthas-bootversion:3.6.9[INFO]Cannotfindjavaprocess.Trytorun`jps`commandliststheinstrume......
  • 使用 SQLAlchemy 库来实现对 MySQL 数据库的增删改查
    在 Flask 中使用SQLAlchemy库来实现对MySQL数据库的增删改查fromflaskimportFlask,request,jsonifyfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='mysql://username:password@localhost/dbname'ap......
  • Linux使用HTTP隧道代理模板
    以下是一个使用HTTP隧道代理的Linux模板:1.首先,确保你已经安装了curl和socat工具。如果没有安装,可以使用以下命令进行安装:```sudoapt-getinstallcurlsocat```2.创建一个名为proxy.sh的脚本文件,并将以下内容复制到文件中:```bash#!/bin/bash#设置代理服务器的地址和端口PROXY_H......
  • Linux | screen命令详解
    在服务器上搭建一些服务的时候,经常要用到screen命令。这是因为一般情况下我们只会开一个连接服务器的控制台,但是某些服务(比如minecraft服务器)开启的时候需要占据一整个控制台,如果关闭了就会导致进程终止。这就成了类似单进程的效果。而screen命令就是为了能够在服务器上开启多个控......
  • windows配置时间服务器 linux配置从windows同步时间
    背景两台服务器,其中windows能够联网,linux不能联网windows为windowsserver2016linux为centos7配置windows时间服务配置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config,找到Config目录,双击Config目录下的AnnounceFlags,将值调整为5配置HKEY_LOCAL_MACH......