目前众多方向项目中数据库频繁应用,出现频率越来越高,初学者掌握一两个典型数据库使用还是比较有必要的,先完成简单的增删改查,再做深入学习,下面是个入门的MySQL数据库应用,大家可以一起讨论看下数据库典型用法,有问题可以留言探讨学习
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <mysql.h>
//测试使用数据库
int main(int argc,char *argv[])
{
//变量初始化
MYSQL my_connect;
MYSQL *my_ptr;
unsigned int timeout=10;
int iTableRow,iTableCol,i,j;
MYSQL_ROW sqlrow;
//1、初始化数据结构体 mysql_init
my_ptr = mysql_init(&my_connect);
if(NULL == my_ptr)
{
perror("init error\r\n");
goto err;
}
//2、设置额外选项 mysql_options
if(mysql_options(&my_connect, MYSQL_OPT_CONNECT_TIMEOUT, (char *)&timeout))
{
perror("options error\r\n");
goto err;
}
//3、主动申请连接数据库 mysql_real_connect
my_ptr = mysql_real_connect(&my_connect, NULL, "l", "123", "test", 0, NULL, 0);
if(NULL == my_ptr)
{
perror("connect error\r\n");
goto err;
}
/*
//4、创建表 mysql_query
if(mysql_query(&my_connect, "create table ttt(id int,name varchar(20))"))
{
perror("create error\r\n");
goto err;
}
*/
//5、插入项 mysql_query
if(mysql_query(&my_connect, "insert into ttt(id,name) values(1,'zhang'),(2,'li')"))
{
perror("inset error\r\n");
goto err;
}
//6、查看内容 mysql_query
if(mysql_query(&my_connect, "select * from ttt"))
{
perror("select error\r\n");
goto err;
}
MYSQL_RES *res_ptr;
MYSQL_FIELD *tt;
res_ptr = mysql_store_result(&my_connect);//集合
if( res_ptr )
{
iTableRow = mysql_num_rows(res_ptr);//行
iTableCol = mysql_num_fields(res_ptr);//列
tt = mysql_fetch_field(res_ptr);
printf("table is %s:\r\n",tt->table);
for(i=0;i<iTableCol;i++)
{
printf("%-8s ",(tt+i)->name);
}
printf("\r\n");
for(i=0; i<iTableRow; i++)
{
sqlrow = mysql_fetch_row(res_ptr);
for(j=0; j<iTableCol; j++)
{
printf("%-8s ",sqlrow[j]);//字符串向左靠,右补空格
}
printf("\n");
}
}
mysql_free_result(res_ptr);
//7、关闭数据库 mysql_close
mysql_close(&my_connect);
return 0;
err:
printf("error:%s\r\n",mysql_error(&my_connect));
mysql_close(&my_connect);
return 0;
}