Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523642
  • 博文数量: 118
  • 博客积分: 10028
  • 博客等级: 上将
  • 技术积分: 1820
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-07 18:46
文章分类

全部博文(118)

文章存档

2009年(12)

2008年(106)

我的朋友

分类: Mysql/postgreSQL

2008-09-29 00:43:05


下午花了两节课时间看了下mysql编程,然后想写点小程序,很直接的就想到写个hello world,不过既然是mysql那当然该写成"Hello Mysql"~所以就这样开始了...

里面有几个API,可以去看看mysql API,网上比较多,这里就不解释了~

有个问题,就是程序里面的mysql_errno()有问题,运行如果执行到那步就会有"段错误"(当然通常不会给它执行的机会),但是疑惑的是怎么会这样呢?所以后面几个错误处理就没用这个了,知道的麻烦给留个言告知一下,将不胜感激!

下面就看程序吧~ 链接的时候当然要用你自己的密码了,还有要先建个数据库,我建的'william',你改成自己的就是了,(我把密码给换了,嘿嘿~)。另外,第一个mysql_query()是建一个hello表,这里有个问题就是,如果hello表已经存在,那么将返回错误,所以请确保表是不存在的(当然这是一个不该发生的问题,只不过我们这个程序的目的并不是处理这类问题,我们要hello mysql)...

流程
链接数据库->新建hello表->插入hello mysql->取出hello mysql


代码:


/*********************************
 * This is a Hello-level program *
 * Use C and Mysql database      *
 * A little fun!                 *
 * Author:zuii                   *
 * Date:2008/09/29               *
 *********************************/

#include <stdio.h>
#include <stdlib.h>

#include "mysql.h"

int main(int argc,char **argv)
{
    MYSQL *sql_p;
    MYSQL_RES *result_p;
    MYSQL_ROW row_p;
    int res;

    sql_p=mysql_init(NULL);
    if(sql_p==NULL){
        printf("Init error!\n");
        exit(1);
    }

    sql_p=mysql_real_connect(sql_p,"localhost","root","123456",
                    "william",0,NULL,0);
    if(!sql_p){
        fprintf(stderr,"%d:%s\n",mysql_errno(sql_p),mysql_error(sql_p));
        exit(1);
    }

    res=mysql_query(sql_p,"CREATE TABLE hello(hello varchar(20))");
    if(res){
        printf("Creat table error!\n");
        exit(1);
    }

    res=mysql_query(sql_p,"INSERT INTO hello(hello) VALUES('Hello Mysql')");
    if(res){
        printf("Insert error!\n");
        exit(1);
    }
    
    res=mysql_query(sql_p,"SELECT hello FROM hello");
    if(res){
        printf("Select error!\n");
        exit(1);
    }
    
    result_p=mysql_use_result(sql_p);
    if(!result_p){
        printf("mysql_use error!\n");
        exit(1);
    }

    row_p=mysql_fetch_row(result_p);
    printf("%s\n",row_p[0]);

    mysql_close(sql_p);
    return 0;
}



编译执行:


zuii@william-desktop:~/c/mysql$ gcc -Wall hellomysql.c -o hellomysql -I/usr/include/mysql -lmysqlclient
zuii@william-desktop:~/c/mysql$ ./hellomysql
Hello Mysql
zuii@william-desktop:~/c/mysql$

阅读(2237) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-12-15 15:21:20

出现段错误当然mysql_errno执行不到了,估计是你读取数据时数据库中当前字段为NULL,没判断时就会出现段错误了。比如: row_p=mysql_fetch_row(result_p); printf("%s\n",row_p[0]); row_p和row_p[0]都应该做判断是不为NULL。