linux下连接mysql接口
1)需要什么头文件?
#include <mysql/mysql.h>//mysql interface's include file
2)需要什么库函数
/usr/lib/mysql
3)怎么连接到一个已经存在的MySQL数据库?
可以用mysql_real_connect来连接数据库,用完后记得要用mysql_close断开这个连接.mysql_real_connect()试图建立到运行host的一个MySQL数据库引擎的一个连接 。
在调用mysql_real_connect()之前,你必须调用mysql_init()初始化MYSQL结构
4)连接到数据库后,怎样执行一条SQL语句?
用函数mysql_query,或者mysql_real_query。后者速度更快??? string sql_cmd = "select * from mytable";
ret = mysql_real_query( &obj_sql, sql_cmd length(sql_cmd) );事实上,update/insert/alter等基本的SQL语句都是用这两个函数来执行的。
5)怎样获取执行结果?
5.1 获取查询结果??? 在使用了mysql_real_query进行了Select查询之后,可以用mysql_use_result或mysql_store_result来收集查询结果
Res=mysql_use_result(mysql)
用完后记得用mysql_free_result来释放内存
5.2显示字段名??? 用mysql_store_result或mysql_use_result收集了查询结果后,可用mysql_fetch_fields来收集所有字段
while((row=mysql_fetch_row(res))>0)
{
for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s ",row[t]);
}
printf("\n");
}
mysql_num_rows()
my_ulonglong mysql_num_rows(MYSQL_RES *result)
说明
在结果集合中返回行的数量。
mysql_num_rows()的使用取决于你是否使用mysql_store_result()或mysql_use_result()返回一个结果集合。如果你使用mysql_store_result(),mysql_num_rows()可以马上被调用。如果你使用mysql_use_result(),mysql_num_rows()将不会返回正确的值,直到在结果集合中的所有行均被检索了
mysql_num_fields()
unsigned int mysql_num_fields(MYSQL_RES *result)
说明
在结果集合中返回列的数量。
下面是具体的并行计算的一个例子
#include "mpi.h"//MPICH's include file
#include <stdio.h>
#include <mysql/mysql.h>//mysql interface's include file
#include <string.h>
/*-----------------------------------------------------*/
/*List the table friend_info of database friend */
/*----------------------------------------------------*/
void list()
{
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_ROW row;
int t;
mysql= mysql_init((MYSQL*)0);
if(!mysql_real_connect(mysql,"localhost","root","","test",0,NULL,0))
{
printf("Error connecting to database: %s\n",mysql_error(mysql));
}
else printf("Connected...\n");
char list_sql[100]="select * from friend_info";
t=mysql_real_query(mysql,list_sql,(unsigned int)strlen(list_sql));
if (t)
{
printf("Error making query: %s\n",mysql_error(mysql));
}
else printf("list name...\n");
res=mysql_use_result(mysql);
while((row=mysql_fetch_row(res))>0)
{
for(t=0;t<mysql_num_fields(res);t++)
{
printf("%s ",row[t]);
}