Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4710900
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: C/C++

2008-09-15 23:39:43


软件包

请确保你已经安装了必要的开发环境,比如gcc, mysql等等. 下面是编译一个程序所需要安装的软件包的列表 (Ubuntu为例)

  • mysql-client
  • libmysqlclient15-devlibmysqlclient15off
  • mysql-server:
  • gcc, make and other development libs

程序:
下面是段select源码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
 
int main(int argc, char *argv[])
{
MYSQL my_connection;
MYSQL_RES *res_ptr; /*指向检索的结果存放地址的指针*/
MYSQL_ROW sqlrow; /*返回的记录信息*/
MYSQL_FIELD *fd; /*字段结构指针*/
char aszflds[25][25]; /*用来存放各字段名*/
int res; /*执行查询操作后的返回标志*/
int i,j,k;

mysql_init(&my_connection);
if(mysql_real_connect(&my_connection, "localhost", "root","zj077543","test",0,NULL,0))

/*mysql_init和mysql_real_connect没什么好说的,一般照写就OK了*/
{
    printf("Connection success\n");
    /*select start*/
    res = mysql_query(&my_connection, "select * from user");

    if (res)
    {
      printf("SELECT error:%s\n",mysql_error(&my_connection));
    }
    else
    {
           res_ptr=mysql_store_result(&my_connection);
           if(res_ptr)
           {
           printf("Retrieved %lu Rows\n",(unsigned long)mysql_num_rows(res_ptr));
          /*取得各字段名*/
          for(i=0;fd=mysql_fetch_field(res_ptr);i++)
          strcpy(aszflds[i],fd->name);
          /*输出各条记录*/
           printf("下面是检索出的各条记录信息:\n");
            j=mysql_num_fields(res_ptr);
            for(i=0;i<j;i++)
            printf("%s\t",aszflds[i]);
            printf("\n");
            while((sqlrow=mysql_fetch_row(res_ptr)))
            {
              for(i=0;i<j;i++)
              printf("%s\t",sqlrow[i]);
              printf("\n");
             }
            if (mysql_errno(&my_connection))
            {
              fprintf(stderr,"Retrive error:s\n",mysql_error(&my_connection));
            }
            mysql_free_result(res_ptr);
         }
    }

/*select end*/
    mysql_close(&my_connection);
}
else{
    fprintf(stderr, "Connection failed\n");
   if (mysql_errno(&my_connection))
    {
        fprintf(stderr, "Connection error %d: %s\n",
        mysql_errno(&my_connection),
        mysql_error(&my_connection));
        }
}
    return EXIT_SUCCESS;
}



insert的:

/*insert start*/

res = mysql_query(&my_connection, "insert into user values(6,'jimmy',15)");
if (res) 
{
  printf("INSERT error %d:%s\n",mysql_errno(&my_connection),mysql_error(&my_connection));
}
else
 {
  printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connection));
   /*里头的函数返回受表中影响的行数*/
 }
/*insert end*/
update和delete与insert类似,这里就不说了.就insert复杂点.

编译和连接程序

MySQL中有一个特殊的脚本,叫做mysql_config. 它会为你编译MySQL客户端,并连接到MySQL服务器提供有用的信息.你需要使用下面两个选项.
1. --libs 选项 - 连接MySQL客户端函数库所需要的库和选项.

$ mysql_config --libs
输出:

-L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib64 -lssl -lcrypto

2. --cflags 选项 - 使用必要的include文件的选项等等.
$ mysql_config --cflags
输出:

-I/usr/include/mysql -g -pipe -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing

你需要将上面两个选项加入到对源文件的编译命令中. 所以,要编译上面的程序,要使用下面的命令:
$ gcc -o database1 $(mysql_config --cflags) database1.c $(mysql_config --libs)

执行编译后的程序:
$ ./database1



阅读(2884) | 评论(0) | 转发(0) |
0

上一篇:linux网络socket

下一篇:ipc-sem信号量

给主人留下些什么吧!~~