日期:2014-05-16  浏览次数:20667 次

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]);
           }