环境: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