欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++ mysql API以当前日期建表,插入数据库的操作讲解

程序员文章站 2022-03-09 21:50:56
需求: 连接已存在的,并以当前日期为名创建数据表,然后进行插入操作 说明:以下为代码片,并不能直接运行,仅可做参考!!! //数据库相关 const char user[] = "b...

需求:

连接已存在的,并以当前日期为名创建数据表,然后进行插入操作

说明:以下为代码片,并不能直接运行,仅可做参考!!!

//数据库相关
const char user[] = "bladed";         
const char pswd[] = "bladed";        
const char host[] = "47.xx.xx.xx";   //数据库服务器ip 
const char database[] = "bladed";       
unsigned int port = 3306; 
char sql[255]=""; 

struct nowdate
{
    char tmp0[16]; //年月日
    char tmp1[16]; //时分秒
};

nowdate date;

连接数据库:

//连接mysql数据库
mysql_init(&conn);//初始化mysql
//连接mysql:连接句柄、主机ip、数据库用户、密码、数据库名、端口、。。。
mysql *ret = mysql_real_connect(&conn, host, user, pswd, database, port, null, 0);   
if (!ret)  
{  
    messagebox((lpcstr)"连接数据库失败!",(lpcstr)"数据库", mb_ok);  
}
else
{
    messagebox((lpcstr)"连接数据库成功!",(lpcstr)"数据库", mb_ok);
}

创建数据表:

//获取当前时间戳
time_t timep;
time (&timep);
strftime(date.tmp0, sizeof(date.tmp0), "%y-%m-%d",localtime(&timep) ); //年月日
strftime(date.tmp1, sizeof(date.tmp1), "%h:%m:%s",localtime(&timep) ); //时分秒

//判断数据库中有无以今天日期作为表名的数据表,不存在则创建
sprintf(sql,"create table if not exists `%s`(id int not null primary key auto_increment, \
            hhmmss varchar(20), \
            pe double(11,4), \
            wg double(8,4), \
            wt double(6,4), \
            vw double(6,4), \
            tg double(11,4))",date.tmp0);
mysql_query(conn, sql);

插入数据:

//插入数据
sprintf(sql,"insert into `%s`( hhmmss, pe, wg, wt, vw, tg) values('%s',%lf,%lf,%lf,%lf,%lf);",\
    date.tmp0,date.tmp1,status[1],status[2],status[3],status[4],controls[0]);
mysql_query(conn, sql);

//关闭mysql连接
mysql_close(&conn);

说明:

命令 解释
id int not null primary key auto_increment 表示设置主键,并自增
pe double(11,4) 11位,且小数点后数据占4位

结果截图:

==表格式==:

C++ mysql API以当前日期建表,插入数据库的操作讲解

==表写入==:

C++ mysql API以当前日期建表,插入数据库的操作讲解

图中所用软件:navicat for mysql