CRUD

table

create table if not exists `student` (
`id` int auto_increment,
`name` varchar(16) not null,
`age` int not null,
`address` varchar(128) not null,
primary key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

code

//
// Created by zhangrongxiang on 2018/3/5 14:56
// File main
// #include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h> int main() {
MYSQL *mysql = NULL;
// const char *host = "debian";
const char *host = "localhost";
const char *user = "root";
const char *passwd = "root";
const char *db = "fgap_config";
unsigned int port = 3306;
const char *unix_socket = "/var/run/mysqld/mysqld.sock";
int flag = 0, i = 0;
const char *db2 = "test";
char sql[1024] = {0}; if (mysql_library_init(0, NULL, NULL)) {
fprintf(stderr, "could not initialize MySQL client library\n");
exit(EXIT_FAILURE);
}
mysql = mysql_init(mysql);
if (mysql == NULL) {
perror("mysql_init error");
return EXIT_FAILURE;
}
printf("mysql_init success\n");
mysql = mysql_real_connect(mysql, host, user, passwd, db, port, unix_socket, 0);
if (mysql == NULL) {
fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(mysql));
return EXIT_FAILURE;
}
printf("mysql_real_connect success\n");
int ping = mysql_ping(mysql);
if (ping == 0) {
printf("mysql is active !\n");
} else {
return EXIT_FAILURE;
} //////////////////////////////////////////////////////////////////
const char *clientInfo = mysql_get_client_info();
//5.5.58
printf("mysql_get_client_info : %s\n", clientInfo); unsigned long version = mysql_get_client_version();
//50558 = 5*10000 + 5*100 + 58
//major_version*10000 + release_level*100 + sub_version
printf("mysql_get_client_version : %ld\n", version); const char *serverInfo = mysql_get_server_info(mysql);
//5.5.58-0+deb8u1
printf("mysql_get_server_info : %s\n", serverInfo); const char *hostInfo = mysql_get_host_info(mysql);
//Localhost via UNIX socket
printf("mysql_get_host_info : %s\n", hostInfo); unsigned int protoInfo = mysql_get_proto_info(mysql);
//10
printf("mysql_get_proto_info : %d\n", protoInfo); unsigned long serverVersion = mysql_get_server_version(mysql);
//50558
printf("mysql_get_server_version : %ld\n", serverVersion); const char *mysqlInfo = mysql_info(mysql);
//(null)
printf("mysql_info : %s\n", mysqlInfo); const char *stat = mysql_stat(mysql);
//mysql_stat : Uptime: 70217 Threads: 2 Questions: 824 Slow queries: 0 Opens: 69 Flush tables: 1 Open tables: 59 Queries per second avg: 0.011
printf("mysql_stat : %s\n", stat);
////////////////////////////////////////////////////////////////// MYSQL_RES *pRes = mysql_list_dbs(mysql, NULL);
MYSQL_ROW row = NULL;
if (pRes) {
unsigned int fields = mysql_num_fields(pRes);
my_ulonglong rows = mysql_num_rows(pRes);
unsigned int count = mysql_field_count(mysql);
printf("mysql_num_fields : %d\n", fields);//1
printf("mysql_num_rows : %ld\n", (long) rows);//4
printf("mysql_field_count : %d\n", count);//1
while ((row = mysql_fetch_row(pRes)) != NULL) { // 打印结果集
// database: information_schema
// database: fgap_config
// database: mysql
// database: performance_schema
if (strcmp(row[fields - 1], db2) == 0) {
flag = 1;
}
printf("database: %-10s\n", row[fields - 1]);
}
mysql_free_result(pRes);
} if (flag == 0) {
printf("no %s db -> %d\n", db2, flag);
//int mysql_create_db(MYSQL *mysql, const char *db)
/*
* //main.c:(.text+0x34f): undefined reference to `mysql_create_db'
if(mysql_create_db(mysql,"test") == 0){
printf("create test success\n");
} else{
printf("create test error\n");
}
*/
}
if (mysql_select_db(mysql, db2) == 0) {
printf("mysql_select_db(mysql, %s) success \n", db2);
MYSQL_RES *tables = mysql_list_tables(mysql, NULL);
unsigned int fields = mysql_num_fields(tables);
my_ulonglong rows = mysql_num_rows(tables);
printf("mysql_num_fields : %d\n", fields);//1
printf("mysql_num_rows : %d\n", (int) rows);//1
if (tables) {
flag = 0;
MYSQL_ROW fetchRow = NULL;
while ((fetchRow = mysql_fetch_row(tables)) != NULL) {
if (strcmp(fetchRow[fields - 1], "student") == 0)
flag = 1;
printf("table : %-10s\n", fetchRow[fields - 1]);
}
if (!flag) {
FILE *file = NULL;
file = fopen("student.sql", "r");
if (file) {
while (!feof(file)) {
char str[64] = {0};
fgets(str, sizeof(str), file);
strcat(sql, str);
}
printf("%s\n", sql);
} else {
fprintf(stderr, "fopen student.sql error\n");
exit(EXIT_FAILURE);
}
fclose(file);
int r = mysql_real_query(mysql, sql, (unsigned long) strlen(sql));
if (r == 0) {
printf("table student was created success !! \n");
} else {
printf("table student was created error !! \n");
exit(EXIT_FAILURE);
}
} else {
printf("table student already exists !! \n");
}
} else {
printf("something wrong\n");
}
} ///////////////////////////////////////////////////////////////// memset(sql, 0, sizeof(sql));
sprintf(sql, "select count(id) from student");
int count = 0;
if (mysql_real_query(mysql, sql, (unsigned int) strlen(sql)) == 0) {
MYSQL_RES *result = mysql_store_result(mysql);
// my_ulonglong rows = mysql_num_rows(result);
unsigned int fields = mysql_num_fields(result);
MYSQL_ROW fetchRow = mysql_fetch_row(result);
count = atoi(fetchRow[fields - 1]);
printf("count %d\n", count);
mysql_free_result(result);
}
if (count < 50) {
memset(sql, 0, sizeof(sql));
for (i = 0; i < 10; ++i) {
char name[16] = {0};
char address[64] = {0};
sprintf(name, "zing-%d", i);
sprintf(address, "jiangsu-wuxi-%d", i);
sprintf(sql, "INSERT INTO `student` (`name`,`age`,`address`) VALUES('%s','%d','%s')", name, 10 + i,
address);
if (mysql_real_query(mysql, sql, (unsigned int) strlen(sql)) == 0) {
my_ulonglong id = mysql_insert_id(mysql);
printf("insert num %ld success\n", (long int) id);
}
}
}
memset(sql, 0, sizeof(sql));
sprintf(sql, "select * from student order by id asc limit 0,20");
if (mysql_real_query(mysql, sql, (unsigned int) strlen(sql)) == 0) {
MYSQL_RES *result = mysql_store_result(mysql);
unsigned int fields = mysql_num_fields(result);
printf("fields %d\n", fields);
MYSQL_ROW fetchRow;
while ((fetchRow = mysql_fetch_row(result)) != NULL) {
printf("id:%s name:%s age:%s address:%s \n", fetchRow[0], fetchRow[1], fetchRow[2], fetchRow[3]);
}
mysql_free_result(result);
}
///////////////////////////////////////////////////////////////////////////////////////
memset(sql, 0, sizeof(sql));
sprintf(sql, "update student set name='%s',age=%d,address='%s' where id between %d and %d;", "zhangrongxiang", 24,
"jiangsu-xuzhou-1", 1, 10);
if (mysql_real_query(mysql, sql, (int) strlen(sql)) == 0) {
printf("mysql_affected_rows : %d\n", (int) mysql_affected_rows(mysql));
} mysql_close(mysql);
mysql_library_end();
return EXIT_SUCCESS;
} /*
*
* Initialize the MySQL client library by calling mysql_library_init().
* This function exists in both the libmysqlclient C client library and the libmysqld embedded server library,
* so it is used whether you build a regular client program by linking with the -libmysqlclient flag, or an embedded server application by linking with the -libmysqld flag.
*
* Initialize a connection handler by calling mysql_init() and connect to the server by calling mysql_real_connect().
*
* Issue SQL statements and process their results. (The following discussion provides more information about how to do this.)
*
* Close the connection to the MySQL server by calling mysql_close().
*
* End use of the MySQL client library by calling mysql_library_end().
*/

C 扩展库 - mysql API CRUD的更多相关文章

  1. C 扩展库 - mysql API

    MySQL API C API Data Structures MYSQL This structure represents handler for one database connection. ...

  2. C 扩展库 - mysql API general outline

    Application programs should use this general outline for interacting with MySQL Initialize the MySQL ...

  3. C 扩展库 - sqlite3 API CRUD

    CRUD struct student typedef struct STUDENT { unsigned int id; unsigned char name[16]; unsigned int a ...

  4. C 扩展库 - sqlite3 API

    sqlite3 API Summary sqlite3 The database connection object. Created by sqlite3_open() and destroyed ...

  5. 【小结】有关mysql扩展库和mysqli扩展库的crud操作封装

    现阶段php如果要操作mysql数据库 php给我们提供了3套库 1.mysql扩展库   面向过程操作 2.mysqli扩展库  面向对象操作和面向过程操作并存  安全性和效率高于mysql扩展库 ...

  6. php数据库编程---mysql扩展库

    1, Java有一种方式操作数据库, PHP有三种方式来操作mysql数据库.(1)mysql扩展库:(2)mysqli扩展库:(3)pdo: 2, mysql扩展库和mysql数据库区别 3, my ...

  7. PHP基础Mysql扩展库

    mysql扩展库操作步骤如下: 1.连接数据库 2.选择数据库 3.设置操作编码 4.发送指令sql,并返回结果集     ddl:数据定义语句     dml:数据操作语句     dql:数据查询 ...

  8. mysql扩展库-1

    启用mysql扩展库 在php.ini文件中去配置mysql扩展库 extension=php_mysql.dll 可以通过 phpinfo() 查看当前php支持什么扩展库. 在sql扩展库中创建一 ...

  9. php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

    1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo     mysql扩展库与mysql数据库 ...

随机推荐

  1. [label][JavaScript]读nowmagic - js词法作用域、调用对象与闭包

     原文链接:                 http://www.nowamagic.net/librarys/veda/detail/1305 作用域(scope) JavaScript 中的函数 ...

  2. nancy中的本地化

    1 建立一个文件夹 ,名称可以任意 2 添加资源文件 比如 Text.resx 3 使用 <h3>"@Text.Text.Greeting"</h3> 其中 ...

  3. Angularjs 通过directive实现验证两次输入是否一致的功能

    实现效果: 1> 当输入确认密码时验证: 2> 当输入密码时验证: 实现步骤: 1.页面代码: <input class="form-control" type= ...

  4. LightOJ 1220 Mysterious Bacteria(唯一分解定理 + 素数筛选)

    http://lightoj.com/volume_showproblem.php?problem=1220 Mysterious Bacteria Time Limit:500MS     Memo ...

  5. 注意力机制(Attention Mechanism)应用——自然语言处理(NLP)

    近年来,深度学习的研究越来越深入,在各个领域也都获得了不少突破性的进展.基于注意力(attention)机制的神经网络成为了最近神经网络研究的一个热点,下面是一些基于attention机制的神经网络在 ...

  6. ClassNotFoundException和 NoClassDefFoundError的区别

    ##### 1. 类型 ClassNotFoundException继承自Exception,属于java异常类.NoClassDefFoundError继承自Error,在java中Error一般属 ...

  7. API接口安全加强设计方法

    前面两篇相关文章: <Web Api 内部数据思考 和 利用http缓存优化 Api> <Web Api 端点设计 与 Oauth> 1.开放的接口 这样的接口我们天天都在接触 ...

  8. “全栈2019”Java第二章:安装JDK11(Windows)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 文章原文链接 "全栈2019"Java第二章:安装JDK11(Windows) 下一 ...

  9. LOJ#6038. 「雅礼集训 2017 Day5」远行(LCT)

    题面 传送门 题解 要不是因为数组版的\(LCT\)跑得实在太慢我至于去学指针版的么--而且指针版的完全看不懂啊-- 首先有两个结论 1.与一个点距离最大的点为任意一条直径的两个端点之一 2.两棵树之 ...

  10. sublime package control失败

    https://blog.csdn.net/jyfu2_12/article/details/86667132 安装时的错误提示如下: Error installing Package Control ...