LinuxSir.cn,穿越时空的Linuxsir!

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

在linux下用c语言连接mysql,出现“段错误”

[复制链接]
发表于 2005-11-16 10:05:11 | 显示全部楼层 |阅读模式
执行程序时出现“段错误”,没有结果输出
但是用gdb时虽然出现“段错误”,但是有结果输出
 楼主| 发表于 2005-11-16 16:14:33 | 显示全部楼层
/*
* 头文件
*/
#include <stdio.h>
#include <mysql/mysql.h>

MYSQL *db_handle;

int Connect(void);

int Insert(int style,int type,char *msg_from,char *msg_to);

void Close(void);
/*
*  利用c语言的API连接数据库mipls
*/

#include "conmysql.h"


int Connect(void)
{
  MYSQL *mysql;

  mysql_init(mysql);
  if((db_handle = mysql_real_connect(mysql,"localhost","root","123456","mipls",0,NULL,0))==NULL)
  {
    fprintf(stderr,"%s\n",mysql_error(db_handle));
    mysql_close(db_handle);
    return 0;
  }
  return 1;
}

int Insert(int style,int type,char *msg_from,char *msg_to)
{
  char buff[200];
  char *insertstring="insert into message(style,type,msg_from,msg_to) values(%d,%d,'%s','%s')";

  sprintf(buff,insertstring,style,type,msg_from,msg_to);
  insertstring=buff;
  printf("the value of insertstring : %s\n",insertstring);
  if (mysql_query(db_handle,insertstring)!=0)
  {
    fprintf(stderr,"%s\n",mysql_error(db_handle));
    mysql_close(db_handle);
    return 1;
  }
  printf("insert ok\n");
  return 0;
}

void Close(void)
{
  mysql_close(db_handle);
}

/*
*usemysql.c     main函数
*/
#include "conmysql.h"

int main(void)
{
  if(Connect())
  {
    if (Insert(2,233,"mn","lsr"))
    {
      printf("datas not insert into database\n");
      return 1;
    }
  }
  Close();
  return 1;
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-16 17:05:36 | 显示全部楼层
gdb调试信息为:
insert ok

Program received signal SIGSEGV, Segmentation fault.
0x4000c660 in _dl_fini () from /lib/ld-linux.so.2
回复 支持 反对

使用道具 举报

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

本版积分规则

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