- ArthurSlog
- SLog-2
Year·1
Guangzhou·China
- July 8th 2018
想让别人拉你一把,你的手在哪?别想着拉别人一把,否则你也会被拖垮。
开发环境MacOS
Mac自带的编译器,可以直接编译C语言的代码。所以现在,打开你的手机,计时5分钟,编译器了解一下
有点常识 最原始的信息一般都是最有效的信息
如果面向百度或者QQ编程,那趁早转行
在Mysql的官网获取C与Mysql的交互手册Mysql官方手册
- 下面这段话是智商的分水岭
The MySQL C API is a C-based API that client applications written in C can use to communicate with MySQL Server.Client programs refer to C API header files at compile time and link to a C API library file, libmysqlclient, at link time.
- 这段话就是实现C与Mysql数据交互的关键 如果你看不懂 说明你想的太多 做的太少
提醒:当你想进步的时候,第一时间打开官方手册
官方文档一般都不会考虑菜鸟们的阅读感受 所以 作为一只��菜鸟 要有点灵性
下面是在MySQL官网找到的一个具体的调用流程:
step1 初始化MySQL客户端库,mysql_library_init()。
step2 初始化MySQL对象,mysql_init();并连接到服务器, mysql_real_connect()。
step3 发出SQL语句并处理其结果,mysql_eqery()。
step4 关闭与MySQL服务器的连接,mysql_close()。
step5 结束使用MySQL客户端库,mysql_library_end()。
下面main.c是完整的C代码(1分钟浏览一下), 关键是上面提到的五个步骤,函数的用法参考Mysql官方手册
main.c
#include <stdio.h>
#include <mysql.h>
#include <stdlib.h>
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
const char host_name[] = "localhost";
const char user_name[] = "root";
const char password[] = "888888";
const char db_name[] = "my_db";
unsigned int port_num = 0;
unsigned long CLIENT_MULTI_STATMENTS = 0;
int main(void)
{
/* step1 int mysql_library_init(int argc, char **argv, char **groups) */
if (mysql_library_init(0, NULL, NULL))
{
fprintf(stderr, "could not initialize MySQL client library\n");
exit(1);
}
/* step2 MYSQL *mysql_init(MYSQL *mysql) */
mysql_init(&mysql);
/* step2 MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) */
if (mysql_real_connect(&mysql, host_name, user_name, password,
db_name, port_num, NULL, CLIENT_MULTI_STATEMENTS) == NULL)
{
printf("mysql_real_connect() failed\n");
fprintf(stderr, "Failed to connect to database: Error: %s\n", mysql_error(&mysql));
mysql_close(&mysql);
exit(1);
}
/* step3 int mysql_query(MYSQL *mysql, const char *stmt_str) */
int status = mysql_query(&mysql, "SELECT * FROM Account"); /* int mysql_query(MYSQL *mysql, const char *stmt_str) */
<