Linux使用C++操作MySQL数据库

现在换成了C++的工具,就只能用C++导入了。

环境

  • Centos 7
  • gcc 4.8

开始

如果是windows,需要导入一些lib之类的。
linux下好像直接安装库就行了yum install -y mysql-devel
然后引入头文件#incldude <mysql/mmysql.h>
创建一个数据库测试用

CREATE DATABASE c_test;
use c_test;
INSERT INTO a values('1234',13);

基础

最基本的连接程序

#include <stdio.h>
#include <mysql/mysql.h>
int main(){
   
	MYSQL *ConnectPointer=mysql_init(NULL);
	ConnectPointer=mysql_real_connect(ConnectPointer,"127.0.0.1","root","root","c_test",0,NULL,0);
	if (ConnectPointer){
   
		printf("connect database successfully\n");
	}else{
   
		printf("failed to connect database\n");
	}
	mysql_close(ConnectPointer);
	printf("database connection closed successfully\n");
	printf("\n");
	return 0;
}

在编译的时候需要加一点参数,指定用到的库,这个位置可以通过locate mysql.h和locate mysqlclient得到。

gcc main.c -lmysqlclient -I/usr/include/mysql -L/usr/lib64/mysql

然后执行./a.out>可以看到结果

[root@controller c]# gcc main.c -lm -lmysqlclient -I/usr/include/mysql -L/usr/lib64/mysql 
[root@controller c]# ./a.out 
connect database successfully
database connection closed successfully

可以写一个MAKEFILE方便编译,然后make就行了。

CC=g++	#编译器
CFLAGS=-g	#可以使用gdb调试
BIN=MicroChatServer	#生成的可执行目标文件名
OBJS=sysutil.o	#.c/.cpp文件对应的.o目标文件
LIBS=-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -ljsoncpp -lpthread 	#链接库

$(BIN):$(OBJS)
	$(CC) $(CFLAGS) $^ -o $@ $(LIBS)
%.o:%.cpp
	$(CC) $(CFLAGS) -c $< -o $@

.PHONY:clean	#清理所有目标文件和可执行文件
clean:
	rm -f *.o $(BIN)

比基础高级一点

这里我需要查询表中的数据,然后我发现如果使用MYSQL *conn_ptr,指针的话,会有一些地方报错,因为上一个我没搞清楚参数的问题。
MYSQL变量可以是正常的变量p也可以是指针*p

  • 如果是正常的,后面的各种方法中第一个参数都必须是&p
  • 如果是指针,那第一个参数直接传入p就行了

因为第一个参数类型好象是一个*指针,我第一次弄的时候定义的是指针,传入的参数还是个地址,就是**了,然后就报错了,这块注意一下。

查询

流程大致是:

  • 获取MYSQL变量
  • 初始化mysql_init()并连接mysql_real_connect()
  • 构造执行语句变量
  • 执行语句mysql_query()
  • 获取数据mysql_store_result()
  • 逐行分析mysql_fetch_row()
#include <stdio.h>
#include <mysql/mysql.h>

int main(){
   
	char SelectAllExec[]="select * from a";
	int ResultNum=0;
	MYSQL_RES *Result;
	MYSQL_ROW Row;
	MYSQL ConnectPointer;
	mysql_init(&ConnectPointer);
	mysql_real_connect(&ConnectPointer,"127.0.0.1","root","root","c_test",0,NULL,0);
	if (&ConnectPointer)
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值