关于在linux下用c连接数据库的一个小试验

尝试照猫画虎的试验写了一下c连接数据库的操作,经过调试,最后略有感觉,在这里记录一下。


首先需要粘两段代码,第一段代码是源码,第二段代码是编译的时候需要用的Makefile文件内容。


第一段:

/******************************************
* 程序名:DatabaseTest.cc
* 功能  :用c链接数据库小实验
* 时间  :2015/10/16
* 作者  :Bob
******************************************/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <mysql/mysql.h>

//以下定义了链接数据库时候的一些必要的参数
static char host_name[100] = "127.0.0.1";
static char user_name[100] = "root";	//mysql帐号
static char password[100] = "wmn123";	//mysql密码
static char db_name[100] = "dbtest";	//需要打开的数据库名
static int port_number = 3306;
//在这里随意写了个查询的函数,以后会进行数据的增加删除更新等操作的实验
static char query[100] = "select * from student";	

//注意:这里的三个变量很重要
static MYSQL_RES *res;	//此处的res是接收数据库操作结果集的
static MYSQL_ROW row;	//此处的row是对结果集中的字段进行操作的
static MYSQL *conn;	//此处的conn是进行数据库初始化时候用的


/*************************************
* 函数名:int conn_mysql()
* 功能  :这个函数只是对数据库进行初始化
	  和连接用的。
*
*************************************/
int conn_mysql(){

	conn = mysql_init(NULL); //初始化数据库连接,注意函数mysql_init()

	//这里才是进行数据库链接的真正操作,注意函数mysql_real_connect(),这个函数有8个参数
	if(!mysql_real_connect(conn, host_name, user_name, password, db_name, port_number, 0, 0)){
		printf("connect error!\n");
		exit (0);
	}
		
	return 0;
}


/*************************************
* 函数名:void get_inf()
* 功能  :这个函数是从数据库中进行操作的
	  函数。
*
*************************************/
void get_inf(){

	FILE *fp;

	//这里打开了一个文件,准备将操作结果保存到文件中
	fp = fopen("/home/wmn/studentinfo.txt", "w");
 
	if(fp == NULL){
		printf("open error!\n");
	}

	//这里进行数据库操作,注意函数mysql_real_query(),有三个参数
	mysql_real_query(conn, query, strlen(query));
	//这里将操作结果保存到res中
	res = mysql_store_result(conn);


	//while循环取出结果集res中的值,然后赋值给row,注意这里的换数mysql_fetch_row()	
	while((row = mysql_fetch_row(res)) != NULL){
		//输出到文件中
		fprintf(fp, "%s  %s\n", row[0], row[1]);
	}

	fclose(fp);

}

int main(int argc, char **argv){

	conn_mysql();
	get_inf();

	return 0;
}


第二段:

all: DatabaseTest.o
	g++ -Wall -c -I/usr/local/mysql/include/mysql -I/usr/include/mysql  DatabaseTest.c
	g++ -Wall -o DatabaseTest DatabaseTest.o -L/usr/local/mysql/lib/mysql -L/usr/lib/mysql  -lmysqlclient


小总结:
关于第一段源码中的代码,基本已经注释的差不多了,其中写了好几个注意函数什么什么的,那几个函数已经整理笔记,

只是没有写到博客里面,明天有空会将那几个函数的详解搬到博客。

关于第二段Makefile文件中的编译内容,其实我也不懂,只是照的别人的进行修改,关于Makefile文件的内容编写,会在

以后学习了之后再总结一下。

这个操作是从项目OJ中学习到的,但是我分类到linux下,因为我想这么做,哈哈。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值