各位好,在做一个项目中,我是在linux平台下,fedora8,遇到一个很无奈的问题,就是不能够对MYSQL 类型变量进行初始化,安装的是mysql5.0.45 编译过程中使用的参数是:-I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
不知道出了什么错误,我设断点到mysql_init(&mysql);运行这句时,程序就死掉了,求高手帮忙,指点迷津!不甚感激
程序如下:#include <iostream>
#include <cstdlib>
#include<stdio.h>
#include<mysql.h>#define FALSE 0
#define TRUE 1using namespace std;char * demand_password(char* id,char* tb);
int main(int argc, char *argv[])
{
char* s=(char *)malloc(sizeof(char)*10); char* spre=s; spre=demand_password("2510","operator"); if(spre==FALSE) { printf("spre为FALSE"); return 0; } printf("%s",spre); free(s); s=NULL; spre=NULL; return 1;}
char * demand_password(char* id,char* tb) //返回值为password{ char* password=NULL; char szSqlText[500]=""; MYSQL mysql; MYSQL_RES * res; MYSQL_ROW row ; mysql_init(&mysql); if(mysql_real_connect(&mysql,"localhost", //连接数据库 "root", "123123", "wk", MYSQL_PORT, NULL, 0 ) ) { if(tb=="user") { sprintf(szSqlText,"select Password from tbuser_info where UserID=" ); strcat(szSqlText,id); } else if(tb=="operator") //判断查询操作员还是普通用户 { sprintf(szSqlText,"select Password from tboperator_info where UserID=" ); strcat(szSqlText,id); } if (mysql_query( &mysql, szSqlText)) //执行SQL语句 { //执行SQL语句出错 printf("Can't find the id you want") ; mysql_close( &mysql ) ; return FALSE ; } res = mysql_store_result( &mysql ) ; //取得查询结果 int numRecords=mysql_num_rows(res); if(numRecords==0) { printf("numRecords 为 0\n"); mysql_free_result( res ) ; return FALSE; } row=mysql_fetch_row(res); password=row[0]; mysql_free_result( res ) ; /*res = mysql_store_result( &mysql ) ; //取得查询结果 row=mysql_fetch_row(res); password=row[0]; mysql_free_result( res ) ; */ } else { //连接数据库出错 printf( "Can't connect to the mysql server ") ; //printf("\n,%s",mysql_error(&mysql)); mysql_close( &mysql ) ; return FALSE ; } mysql_close( &mysql ) ; return password; }
不知道出了什么错误,我设断点到mysql_init(&mysql);运行这句时,程序就死掉了,求高手帮忙,指点迷津!不甚感激
程序如下:#include <iostream>
#include <cstdlib>
#include<stdio.h>
#include<mysql.h>#define FALSE 0
#define TRUE 1using namespace std;char * demand_password(char* id,char* tb);
int main(int argc, char *argv[])
{
char* s=(char *)malloc(sizeof(char)*10); char* spre=s; spre=demand_password("2510","operator"); if(spre==FALSE) { printf("spre为FALSE"); return 0; } printf("%s",spre); free(s); s=NULL; spre=NULL; return 1;}
char * demand_password(char* id,char* tb) //返回值为password{ char* password=NULL; char szSqlText[500]=""; MYSQL mysql; MYSQL_RES * res; MYSQL_ROW row ; mysql_init(&mysql); if(mysql_real_connect(&mysql,"localhost", //连接数据库 "root", "123123", "wk", MYSQL_PORT, NULL, 0 ) ) { if(tb=="user") { sprintf(szSqlText,"select Password from tbuser_info where UserID=" ); strcat(szSqlText,id); } else if(tb=="operator") //判断查询操作员还是普通用户 { sprintf(szSqlText,"select Password from tboperator_info where UserID=" ); strcat(szSqlText,id); } if (mysql_query( &mysql, szSqlText)) //执行SQL语句 { //执行SQL语句出错 printf("Can't find the id you want") ; mysql_close( &mysql ) ; return FALSE ; } res = mysql_store_result( &mysql ) ; //取得查询结果 int numRecords=mysql_num_rows(res); if(numRecords==0) { printf("numRecords 为 0\n"); mysql_free_result( res ) ; return FALSE; } row=mysql_fetch_row(res); password=row[0]; mysql_free_result( res ) ; /*res = mysql_store_result( &mysql ) ; //取得查询结果 row=mysql_fetch_row(res); password=row[0]; mysql_free_result( res ) ; */ } else { //连接数据库出错 printf( "Can't connect to the mysql server ") ; //printf("\n,%s",mysql_error(&mysql)); mysql_close( &mysql ) ; return FALSE ; } mysql_close( &mysql ) ; return password; }
头文件是否正常?重新安装一下试试,用其它语言试试能否MYSQL