LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1854|回复: 11

用gcc开发mysql数据库(mysql c api)

[复制链接]
发表于 2004-12-15 19:58:17 | 显示全部楼层 |阅读模式
用gcc开发mysql数据库(mysql c api)

/*#define mysql_field_count mysql_num_fields*/
#include <stdio.h>
#include <string.h>
#include <mysql.h>

#define def_host_name "localhost"
#define def_user_name "root"
#define def_password  NULL
#define def_db_name   "dbtest"

MYSQL  *conn;


void process_result_set(MYSQL *conn,MYSQL_RES *res_set)
  {
    MYSQL_ROW  row;
    unsigned int  i;
   
    while ((row = mysql_fetch_row (res_set)) != NULL)
    {
     for (i = 0; i< mysql_num_fields (res_set); i++)
      {
        if (i>0)
            fputc('\t',stdout);
        printf("%s",row != NULL ? row : "NULL");
      }
      fputc ('\n',stdout);
    }
    if (mysql_errno (conn) !=0)
       printf ("mysql_fetch_row() failed");
    else
       printf("%lu rows returned\n",(unsigned long) mysql_num_rows (res_set));
}




void process_query(MYSQL * conn,char *query)
  {
   MYSQL_RES *res_set;
   unsigned int field_count;

     if(mysql_query (conn,query) != 0)
       {printf("process_query() failed");
        return;
       }

   res_set=mysql_store_result(conn);
   if (res_set == NULL)
   {
      if (mysql_field_count (conn) > 0)
         { printf("problem processing result set");}
      else
      { printf ("%lu rows affected\n", (unsigned long) mysql_affected_rows(conn));}
   }
   else
   {process_result_set(conn,res_set);
    mysql_free_result(res_set);
   }

  }



int main (int argc,char *argv[])
{
  conn=mysql_init(NULL);
  mysql_real_connect(
              conn,
              def_host_name,
              def_user_name,
              def_password,
              def_db_name,
              0,
              NULL,
              0);
  process_query(conn,"select * from xj");
  mysql_close(conn);
  exit(0);
  }

编译:
gcc -c -I/usr/local/mysql/include myclient.c
连接:
gcc -o myclient myclient.o -L/usr/local/mysql/lib -lmysqlclient -lm

在Free BSD,mysql-standard-4.1.7下,测试通过。
发表于 2004-12-28 11:00:39 | 显示全部楼层
不错。UP一下
发表于 2005-1-5 22:31:56 | 显示全部楼层
为什么我编译的时候说找不到mysql.h
myclient.c:5:19: mysql.h: No such file or directory
我装了mysql的啊
要装什么才有这个  :ask  :ask
发表于 2005-1-6 12:50:40 | 显示全部楼层
安装MYSQL开发包(可以从rmpfind 找到)
mysql-devel-3.23.58-1.9

看看安装了什么东东,应该有mysql.h 注意路径
#rpm -ql mysql-devel-3.23.58-1.9
发表于 2005-1-6 12:52:05 | 显示全部楼层
忘了说 在RH9.0下
发表于 2005-1-6 22:43:05 | 显示全部楼层
果然是mysql.h 路径的问题
该为这样#include <mysql/mysql.h>就找到了
但有出现了新问题
不知道这些是怎么会事啊?
#  gcc -c myclient.c
#  gcc -o myclient  myclient.o
myclient.o: In function `process_result_set':
myclient.o(.text+0xe): undefined reference to `mysql_fetch_row'
myclient.o(.text+0x31): undefined reference to `mysql_num_fields'
myclient.o(.text+0xbe): undefined reference to `mysql_errno'
myclient.o(.text+0xe5): undefined reference to `mysql_num_rows'
myclient.o: In function `process_query':
myclient.o(.text+0x10c): undefined reference to `mysql_query'
myclient.o(.text+0x130): undefined reference to `mysql_store_result'
myclient.o(.text+0x147): undefined reference to `mysql_field_count'
myclient.o(.text+0x16e): undefined reference to `mysql_affected_rows'
myclient.o(.text+0x19d): undefined reference to `mysql_free_result'
myclient.o: In function `main':
myclient.o(.text+0x1bc): undefined reference to `mysql_init'
myclient.o(.text+0x1e6): undefined reference to `mysql_real_connect'
myclient.o(.text+0x20d): undefined reference to `mysql_close'
collect2: ld returned 1 exit status
发表于 2005-1-7 15:27:32 | 显示全部楼层
没连接mysqlclient.a啊
发表于 2005-1-10 11:39:22 | 显示全部楼层
c 语言的开发包是 mysql client ....
发表于 2005-1-16 19:09:05 | 显示全部楼层
这个包不错的,安装过mysql就有这个包,如果不想安装mysql,找个安装过的人copy一份就行了。。
回复 支持 反对

使用道具 举报

发表于 2005-1-27 21:15:03 | 显示全部楼层
211.92.88.40/~wide288/download/create
211.92.88.40/~wide288/download/create.c
看看这两个文件。第一个是GTK的执行文件。
创建数据库有问题,在我机器上,我系统是debian
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表