免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2473 | 回复: 10
打印 上一主题 下一主题

C一直连不上mysql 请各位指教阿 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-12 14:36 |只看该作者 |倒序浏览
这个是我测试的代码:

#include "/usr/local/mysql/include/mysql/mysql.h"
#include <stdio.h>

MYSQL *mysql;

char host[]="localhost";
char user[]="root";
char passwd[]="sunyan11";
char dbname[]="userinfo";
char socket[]="/var/lib/mysql/mysql.sock";
int  port=3306;
int t;

int main(){

mysql_init(mysql);

if (!mysql_real_connect(mysql,host,user,passwd,dbname,port,socket,0))
     {
       printf( "Error connecting to database: %s\n",mysql_error(mysql));
     }
       else printf("Connected...\n");

mysql_close(mysql);

}

编译完之后 运行会出现Segmentation fault

论坛徽章:
0
2 [报告]
发表于 2006-04-12 14:38 |只看该作者
我也很奇怪 为啥不行呢

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-04-12 15:05 |只看该作者
MYSQL mysql;
mysql_init(&mysql);

建议学下指针.

论坛徽章:
0
4 [报告]
发表于 2006-04-12 15:33 |只看该作者
mysql_init(mysql) 改为:
1.mysql=mysql_init(NULL);
2.mysql=(MYSQL *)malloc(sizeof(MYSQL));
   mysql_init(mysql);
不然就象这个:
char *p;
memset(p, 0x00, 4);

论坛徽章:
0
5 [报告]
发表于 2006-04-12 16:16 |只看该作者
不是这个原因  继续

论坛徽章:
0
6 [报告]
发表于 2006-04-12 16:20 |只看该作者
我无论怎么改  都会出这个错  很奇怪

论坛徽章:
0
7 [报告]
发表于 2006-04-12 16:36 |只看该作者
问一下你是怎么编译的,另外我对你的#include "/usr/local/mysql/include/mysql/mysql.h"很疑惑

论坛徽章:
0
8 [报告]
发表于 2006-04-12 16:51 |只看该作者

  1. MYSQL           *mysql = NULL;

  2. int     initSQLConnect()
  3. {
  4.     char user[]="root";
  5.     char passwd[]="sunyan11";
  6.     char dbname[]="userinfo";
  7.    
  8.     /******************************************************************************************
  9.     *
  10.     *   初始化数据库的连接
  11.     *
  12.     *****************************************************************************************/
  13.     mysql = (MYSQL *)malloc(sizeof(MYSQL));
  14.    
  15.     mysql = mysql_init(mysql);
  16.     if(mysql == NULL) {
  17.         fprintf(stderr, "mySql 初始化失败 !\n");
  18.         return        -1;
  19.     }

  20.     if (!mysql_real_connect(mysql,NULL,user,passwd,dbname,0,NULL,0))        {
  21.         fprintf(stderr, "连接数据库失败  错误 : %s\n",  mysql_error(mysql));
  22.         mysql_close(mysql);
  23.         free((char *)mysql);
  24.         return -1;
  25.      }
  26.     return  0;
  27.    
  28. }
复制代码

试试这段代码

[ 本帖最后由 caojiqun 于 2006-4-12 16:53 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-04-12 16:56 |只看该作者
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s\n",
mysql_error(&mysql));
}
这是Mysql userguide上的一个例子,把函数mysql_real_connect的参数改一下可以试试
另外,头文件只要#include <mysql/mysql.h>,
编译时加上-L/usr/local/lib/mysql即可

论坛徽章:
0
10 [报告]
发表于 2006-04-12 17:01 |只看该作者
原帖由 jeffyan 于 2006-4-12 16:20 发表
我无论怎么改  都会出这个错  很奇怪

那你看看你改的文件是不是你编译的文件!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP