#include<stdio.h>
#include"myclient.h"
int getInput(char *data, char *info, int length)
{
if(NULL == data || NULL == info)
{
printf("fucn getInput error: (NULL == data || NULL == info)\n");
return -1;
}
char tmp[1024];
memset(tmp, 0, sizeof(tmp));
sprintf(tmp, "%s", info);
//输出提示信息,用此方法可以避免printf的缺点,不用遇到\n或输出缓冲区满了才向屏幕打印信息
write(STDOUT_FILENO, tmp, strlen(tmp));
memset(data, 0, length);
read(STDIN_FILENO, data, length); //从键盘输入内容
data[strlen(data) - 1] = 0; //把输入最后一个字符\n替换为整数0,而不是字符'0'
return 0;
}
int getResult(MYSQL *mysql, MYSQL *connection)
{
if(NULL == mysql || NULL == connection)
{
printf("fucn getInput error: (NULL == mysql || NULL == connection)\n");
return -1;
}
MYSQL_RES *result = mysql_store_result(connection);
MYSQL_FIELD *field; //获取字段
int iFieldCount= 0;
while(1)
{
field = mysql_fetch_field(result);
if(field == NULL)
break;
printf("%-15s\t", field->name);
iFieldCount++;
}
printf("\n");
MYSQL_ROW row ;
while(1)
{
row= mysql_fetch_row(result);
if(row ==NULL)
break;
for(int i=0; i< iFieldCount; i++)
{
printf("%-15s\t", (char *)row[i]);
}
printf("\n");
}
mysql_free_result(result);
return 0;
}
int execCommand(MYSQL *mysql, MYSQL *connection, const char *sql)
{
if(NULL == mysql || NULL == connection || sql == NULL)
{
printf("fucn runCommand error: (NULL == mysql || NULL == connection)\n");
return -1;
}
//执行SQL语句
printf("%s\n", sql);
if(mysql_query(connection, sql) !=0)
{
printf("query error :%s\n", mysql_error(mysql));
return -2;
}
//判断SQL语句执行后,是否返回需要显示的内容
if(strncmp(sql, "select ",sizeof("select")) == 0 || strncmp(sql, "SELECT ", sizeof("SELECT"))==0 ||
strncmp(sql, "show ", sizeof("show")) == 0 || strncmp(sql, "SHOW ", sizeof("SHOW"))==0 ||
strncmp(sql, "desc ", sizeof("show")) == 0 || strncmp(sql, "DESC " , sizeof("DESC")) == 0)
{
return getResult(mysql, connection);
}
return 0;
}