一段旧代码 ———— linux下C语言操作mysql

这篇博客介绍了如何在CentOS 6.2环境下,使用C语言通过MySQL API进行数据库操作。首先,在Eclipse中配置项目设置,添加mysqlclient库和库路径。接着,文章展示了简单的C代码示例,演示了C语言调用MySQL API的基本用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:CentOS6.2 + mysql5.1.6+eclipse

cat /etc/centos-release
看一下版本,

CentOS release 6.2 (Final)

再来查一下mysql版本:

mysql -V
V是要大写的,

mysql  Ver 14.14 Distrib 5.1.61, for redhat-linux-gnu (i386) using readline 5.1

OK,大概就这样吧,虽然mysql都更新到5.7了,但是基本的一些API还是变化不大的。


在eclipse里面新建一个project,名字你随便取好了,在project的properties里面选中:

C/C++ Build →setting→Tool Setting→GCC C++ Linker→Libraries

在上面的Libraries(-l)里面添加mysqlclient,下面的Libraries Search Path(-L)里面添加/usr/lib/mysql

下面就简单的来几行代码,写一写C怎么调用API来操作mysql的。

/*
 ============================================================================
 Name        : 20140804_test_mysql.c
 Author      : Benjamin
 Version     :
 Copyright   : Free,^8^
 Description : just a sample for mysql operating by using C language
 ============================================================================
 */

#include 
#include 
#include 
#include "mysql/mysql.h"

#define HOST_NAME   "localhost"
#define USER_NAME   "root"
#define DB_PASSWORD "12345"
#define DB_NAME     "test_20140804"

MYSQL *connectDb()
{
	MYSQL *connectPtr;
	connectPtr = mysql_init(NULL);
	if(!connectPtr)
		return NULL;
	if(mysql_real_connect(connectPtr,HOST_NAME,USER_NAME,DB_PASSWORD,DB_NAME,0,NULL,0))
		return connectPtr;
	else
		return NULL;
}
int createDb(const char *dbName)
{
	MYSQL *connectPtr;
	connectPtr = mysql_init(NULL);
	if(!connectPtr)
	{
		mysql_close(connectPtr);
		return EXIT_FAILURE;
	}
	if(mysql_real_connect(connectPtr,HOST_NAME,USER_NAME,DB_PASSWORD,NULL,0,NULL,0))
	{
		char sqlCmd[512] = {0};
		sprintf(sqlCmd,"create database if not exists %s default character set utf8",dbName);
		if(!mysql_query(connectPtr,sqlCmd))
		{
			mysql_close(connectPtr);
			return EXIT_SUCCESS;
		}
		else
		{
			fprintf(stderr,"ERROR: %s \n",mysql_error(connectPtr));
			mysql_close(connectPtr);
			return EXIT_FAILURE;
		}
	}
	else
	{
		fprintf(stderr,"ERROR: %s \n",mysql_error(connectPtr));
		mysql_close(connectPtr);
		return EXIT_FAILURE;
	}
}
int createTable(MYSQL *connectPtr,const char *tableName)
{
	char sqlCmd[512] = {0};
	sprintf(sqlCmd,"create table if not exists %s (ID INT AUTO_INCREMENT UNIQUE PRIMARY KEY, Username VARCHAR(256),Email VARCHAR(256)) default character set utf8",tableName);
	if(!mysql_query(connectPtr,sqlCmd))
		return EXIT_SUCCESS;
	else
	{
		//fprintf(stderr,"ERROR: %s \n",mysql_error(connectPtr));
		return EXIT_FAILURE;
	}
}
int insertTable(MYSQL *connectPtr,const char *tableName,const char *istUsername,const char *emailAddress)
{
	char sqlCmd[512] = {0};
	sprintf(sqlCmd,"insert into %s values (0,'%s','%s')",tableName,istUsername,emailAddress);
	if(!mysql_query(connectPtr,sqlCmd))
	{
		//int newId = mysql_insert_id(connectPtr);//get the new ID
		return EXIT_SUCCESS;
	}
	else
	{
		//fprintf(stderr,"ERROR: %s \n",mysql_error(connectPtr));
		return EXIT_FAILURE;
	}
}
int selectTable(MYSQL *connectPtr,const char *tableName)
{
	char sqlCmd[512] = {0};
	sprintf(sqlCmd,"select * from %s",tableName);
	if(!mysql_query(connectPtr,sqlCmd))
	{
		MYSQL_RES *sqlResult;
		MYSQL_ROW resultRow;
		sqlResult = mysql_store_result(connectPtr);
		if(!mysql_num_rows(sqlResult))
		{
			mysql_free_result(sqlResult);
			printf("Empty set !\n");
		}
		else
		{
			while( (resultRow=mysql_fetch_row(sqlResult)) )
			{
				unsigned i=0;
				for(; i


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值