您的位置:首页 > 运维架构 > Linux

CentOS中利用C语言操作MySQL,插入日期和时间

2016-04-05 21:51 603 查看
最近租用了一个云服务器,操作系统为CentOS6.5 64bit,搭建的LAMP环境,刚开始在bash shell中通过嵌入PHP来进行socket编程和mysql操作,不知什么原因总是会生成一个新进程阻碍程序重新执行,遂移步C语言来操作socket和mysql。

==============================================================================

进入正题:

利用PHP向MySQL的某一数据库的表中插入数据时,有时需要插入当时的时间的日期,所以会使用curtime()和curdate()两个函数,可谓省时省力,语言如下:

INSERT INTO db_test(date,time) VALUES(curdate(),curtime())

转战C语言后,同样需要进行相同的操作时,通过百度发现搜索的文章中都是利用locatetime()来获取时间后,再对字符串进行处理,鄙人感觉着实麻烦,遂抱着试一试的态度仍然使用 INSERT INTO db_test(date,time) VALUES(curdate(),curtime())

来对数据库进行操作,发现可行。

过程如下:

1、编写代码

vim mysql.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#include <mysql/errmsg.h>
#include <mysql/mysqld_error.h>

MYSQL conn;

void connection(const char* host, const char* user, const char* password, const char* database) {
mysql_init(&conn);

if (mysql_real_connect(&conn, host, user, password, database, 0, NULL, 0)) {
printf("Connection success!\n");
} else {
fprintf(stderr, "Connection failed!\n");  //stderr为标准错误输出,一般输出到屏幕上
if (mysql_errno(&conn)) {
fprintf(stderr, "Connection error %d: %s\n", mysql_errno(&conn), mysql_error(&conn));
}
exit(EXIT_FAILURE);
}
}

void insert(void) {
int result = mysql_query(&conn, "INSERT INTO db_test(date,time) VALUES(curdate(),curtime())");
if (!result) {
printf("Inserted %lu rows\n", (unsigned long)mysql_affected_rows(&conn));
} else {
fprintf(stderr, "Insert error %d: %s\n", mysql_errno(&conn), mysql_error(&conn));
}
}

int main (int argc, char *argv[]) {

connection("localhost", "root", "password", "db_name"); //注意修改password和db_name为实际需要的密码和库名
insert();
mysql_close(&conn);
exit(EXIT_SUCCESS);
}


2、编译并执行
gcc -L/usr/local/mysql/lib -lmysqlclient -o mysql mysql.c

./mysql

如图所示,则MySQL操作成功



3、登录phpmyadmin验证是否成功插入

如图:



/*******************************************THE END*************************************************/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息