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. Oracle Submit Request - 请求的调用方法: FND_REQUEST.SUBMIT_REQUEST

    废话: 有一段时间没搞过开发了,做项目又要重新找回点开发的记忆.重新拾回一点点零碎. 跑多了产线,配置的一些参数也忘记得差不多了,长时间没动就是易遗忘,找点资料做个笔记就是时间保镖.   正题: FN ...

  2. 结对项目— 词频统计2(语言C++)

    结对对象:季天梦 博客地址:http://www.cnblogs.com/jitianmeng/ github链接:https://github.com/liuyutianlyt/EX_4.md 比例 ...

  3. IIS 8 nodejs + iisnode 配置

    最近再Server 2012 + IIS 8 中配置NodeJS 运行环境,具体配置过程就不细说了(随便搜搜一堆),安装完nodejs 和 iisnode 之后,出现一个报错,如下: The iisn ...

  4. 理解mvn命令

    mvn clean package依次执行了clean.resources.compile.testResources.testCompile.test.jar(打包)等7个阶段. mvn clean ...

  5. (转)科普:SATA、PCIe、AHCI、NVMe

    原文链接:https://forum.51nb.com/thread-1670848-1-1.html IT 界总喜欢发明新名词.而且同一个东西,可能有几个不同的名字.同一个名字,又可能指不同的东西. ...

  6. 【timeisprecious】【JavaScript 】JavaScript RegExp \W 元字符

    JavaScript>RegExp正则表达式> \W 元字符 1 .From Runnob JavaScript RegExp \W 元字符 定义和用法: \W 元字符用于查找非单词字符. ...

  7. CodeForces1142/1143题解

    题面 传送门(1143) 传送门(1142) \(1143A\) 咕咕 n=read(); fp(i,1,n)a[i]=read(),++cnt[a[i]]; fp(i,1,n)if(++c[a[i] ...

  8. URL的三类编码格式(JavaScript实现)

    编码函数: 1.escape():     不编码的字符有69个:*  +  -   .  /  @  _  0~9  a~z  A~Z     而且escape对0~255以外的Unicode值进行 ...

  9. ps与grep组合命令使用

    管道命令 我们在做运维的时候,经常会使用这个命令ps -ef | grep nginx. ps -ef 表示显示所有进程的消息. | 是管道命令.通常需要借助管道命令”|”多个命令的组合,形式如下: ...

  10. idea部署tomcat:tomee required to support ear/ejb de。。

    要确定artifact 的type是使用的web application :exploded类型,使用javaee application :exploded就会报这个错误.