运行环境:linux
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include "mysql.h"
int main()
{
//初始化
//MYSQL *mysql_init(MYSQL *mysql)
MYSQL *mysql = mysql_init(NULL);
if(mysql==NULL)
{
printf("mysql init error\n");
return -1;
}
printf("mysql init ok\n");
//连接mysql数据库
MYSQL *conn = mysql_real_connect(mysql, "localhost", "root", "123456", "mytest", 0, NULL, 0);
if(conn==NULL)
{
printf("mysql_real_connect error,[%s]\n", mysql_error(mysql));
return -1;
}
printf("connect mysql OK, [%p], [%p]\n", mysql, conn);
char sSQL[255];
MYSQL_RES *results;
while(1)
{
write(STDOUT_FILENO,"mysql> ",strlen("mysql> "));
//执行sql语句
memset(sSQL,0,sizeof(sSQL));
read(STDIN_FILENO,sSQL,sizeof(sSQL));
//去分号,换行,空格
char *p=strrchr(sSQL,';');
if(p!=NULL)
{
*p='\0';
}
printf("%s\n",sSQL);
if(sSQL[0]=='\n')
{
continue;
}
int j=0;
int i=0;
for(i=0;i<255;i++)
{
if(isspace(sSQL[i]))
{
j++;
continue;
}
break;
}
strncpy(sSQL,sSQL+j,strlen(sSQL));
if(strncasecmp(sSQL,"exit",4)==0 || strncasecmp(sSQL,"quit",4)==0)
{
exit(0);
}
int ret = mysql_query(conn, sSQL);
if(ret!=0)
{
printf("mysql_query error, [%s]\n", mysql_error(mysql));
}
if(strncasecmp(sSQL,"select",6)!=0)
{
printf("Query OK,%ld row affected\n",(long)mysql_affected_rows(conn));
continue;
}
//获取结果集
//MYSQL_RES *mysql_store_result(MYSQL *mysql)
results = mysql_store_result(conn);
if(results==NULL)
{
printf("mysql_store_result error,[%s]\n", mysql_error(mysql));
continue;
}
//获取列数
// unsigned int mysql_num_fields(MYSQL_RES *result)
unsigned int num = mysql_num_fields(results);
//获取表头信息---列名
MYSQL_FIELD *fields = mysql_fetch_fields(results);
if(fields==NULL)
{
printf("mysql_fetch_fields error,[%s]\n", mysql_error(mysql));
mysql_free_result(results);
continue;
}
//打印表头信息
for(i=0; i<num; i++)
{
printf("%10s ", fields[i].name);
}
printf("\n");
//获取结果集中每一行记录
//typedef char** MYSQL_ROW
MYSQL_ROW row;
while((row=mysql_fetch_row(results)))
{
for(i=0; i<num; i++)
{
printf("%10s ", row[i]);
}
printf("\n");
}
//释放结果集
mysql_free_result(results);
}
//关闭数据库连接
mysql_close(conn);
return 0;
}