高手你好,最近初学mysql,在用c写mysql函数时遇到点麻烦,望专家百忙中赐教一二,函数如下
#include<windows.h>
#include<stdio.h>
#include<mysql.h>char * demand_certificate(char* id) //输出Usercert
{
char * cert=NULL;
char szSqlText[500]="";
MYSQL mysql;
MYSQL_RES * res;
MYSQL_ROW row ;
mysql_init(&mysql);
if(mysql_real_connect(&mysql,"localhost", //连接数据库
"root", "123123", "lian", MYSQL_PORT, NULL, 0 ) )
{
sprintf(szSqlText,"select UserCert from tbuser_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("不存在这个记录");
row=mysql_fetch_row(res);
cert=row[0];
mysql_free_result( res ) ;
}
else
{ //连接数据库出错
printf( "Can't connect to the mysql server ") ;
mysql_close( &mysql ) ;
return FALSE ;
}
mysql_close( &mysql ) ;
return cert ;
} void main()
{
char* usercert=(char *)malloc(sizeof(char)*2000);
char* usercertpre=usercert;
usercertpre=demand_certificate("2510");
printf("%s",usercertpre);
free(usercert);
usercert=NULL;
usercertpre=NULL;
}
当数据库中有userid为2510的记录时函数正常,当随便输入一个id如251就会出现问题
"0x0040112a"指令应用的"0x00000000"内存。该内存不能为"read".
期待您的答复~谢谢
#include<windows.h>
#include<stdio.h>
#include<mysql.h>char * demand_certificate(char* id) //输出Usercert
{
char * cert=NULL;
char szSqlText[500]="";
MYSQL mysql;
MYSQL_RES * res;
MYSQL_ROW row ;
mysql_init(&mysql);
if(mysql_real_connect(&mysql,"localhost", //连接数据库
"root", "123123", "lian", MYSQL_PORT, NULL, 0 ) )
{
sprintf(szSqlText,"select UserCert from tbuser_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("不存在这个记录");
row=mysql_fetch_row(res);
cert=row[0];
mysql_free_result( res ) ;
}
else
{ //连接数据库出错
printf( "Can't connect to the mysql server ") ;
mysql_close( &mysql ) ;
return FALSE ;
}
mysql_close( &mysql ) ;
return cert ;
} void main()
{
char* usercert=(char *)malloc(sizeof(char)*2000);
char* usercertpre=usercert;
usercertpre=demand_certificate("2510");
printf("%s",usercertpre);
free(usercert);
usercert=NULL;
usercertpre=NULL;
}
当数据库中有userid为2510的记录时函数正常,当随便输入一个id如251就会出现问题
"0x0040112a"指令应用的"0x00000000"内存。该内存不能为"read".
期待您的答复~谢谢
SQL语句执行成问题,判断一下是否有结果集,再执行下一步