用c写mysql接口函数
我用c写了一个很简单的mysql接口函数, 但是别人说直接在c中写sql语句不是很规范,应该写成存储过程,所以请教各位高手,如何用存储过程来改写这个程序,小弟新学mysql,承蒙各位不吝赐教啦~,接口函数如下
#include <windows.h>
#include <stdio.h>
#include <mysql.h>
char* demand_log_date(char * id,char* start_time,char* expiry_time,char* buff)
{
char* buffpre=buff;
int i;
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 time,operation from tboperate_log where userid=" );
strcat(szSqlText,id);
strcat(szSqlText," and time>'");
strcat(szSqlText,start_time);
strcat(szSqlText,"' and time <'");
strcat(szSqlText,expiry_time);
strcat(szSqlText,"'");
if (mysql_query( &mysql, szSqlText)) //执行SQL语句
{ //执行SQL语句出错
printf("demand error!") ;
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;
}
for(i=0;i <numRecords;i++,buffpre++)
{
row=mysql_fetch_row(res);
strcpy(buffpre,row[0]);
buffpre+=19;
strcpy(buffpre,row[1]);
buffpre+=8;
//buffpre='\0';
}
buffpre='\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 buff;
}
int main()
{
int i;
char* m=(char*)malloc(sizeof(char)*500);
memset(m,0,500);
char* mpre=m;
char* n;
n=demand_log_date("45421","2000/01/01 00:00:00","2010/12/31 00:00:00",mpre);
if(n==FALSE)
{
printf("函数未成功运行");
return 0;
}
for(;(*mpre)!='\0';mpre++)
{
printf("%s",mpre);
mpre+=27;
printf("\n");
}
free(m);
m=NULL;
mpre=NULL;
return 1;
}