连接数据库步骤
1.初始化连接环境
2.连接 mysql 的服务器,需要提供如下连接数据:
● 服务器的 IP 地址
● 服务器监听的端口(默认端口是 3306)
● 连接服务器使用的用户名(默认是 root),和这个用户对应的密码
● 要操作的数据库的名字
3.连接已经建立,后续通过调用API执行一个sql语句对数据库进行增删改查
4.如果要进行数据的添加/删除/更新,需要进行事务的处理
● 执行成功则提交事务
● 执行失败则进行数据回滚
5.数据库的读操作 -> 查询 -> 得到结果集
6.遍历结果集 -> 得到了要查询的数据
7.释放资源
#include <mysql.h>
MYSQL *mysql_init(MYSQL *mysql)
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)
int mysql_query(MYSQL *mysql, const char *query)
MYSQL_RES *mysql_store_result(MYSQL *mysql)
unsigned int mysql_num_fields(MYSQL_RES *result)
MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)
unsigned long *mysql_fetch_lengths(MYSQL_RES *result)
typedef char** MYSQL_ROW
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
void mysql_free_result(MYSQL_RES *result)
void mysql_close(MYSQL *mysql)
const char *mysql_character_set_name(MYSQL *mysql)
int mysql_set_character_set(MYSQL *mysql, char *csname)
my_bool mysql_autocommit(MYSQL *mysql, my_bool mode)
my_bool mysql_commit(MYSQL *mysql)
my_bool mysql_rollback(MYSQL *mysql)
const char *mysql_error(MYSQL *mysql)
unsigned int mysql_errno(MYSQL *mysql)
MYSQL* mysql = mysql_init(NULL);
mysql = mysql_real_connect(mysql, "localhost", "root", "passwd", "wzz_DB", 0, NULL, 0);
mysql_set_character_set(mysql, "utf8");
const char* sql = "select * from dept";
int ret = mysql_query(mysql, sql);
if(res == NULL)
{
printf("mysql_store_result()失败了, 原因: %s\n", mysql_error(mysql));
return -1;
}
int num = mysql_num_fields(res);
MYSQL_FIELD * fields = mysql_fetch_fields(res);
for(int i=0; i<num; ++i)
{
printf("%s\t\t", fields[i].name);
}
MYSQL_ROW row;
while( (row = mysql_fetch_row(res)) != NULL)
{
for(int i=0; i<num; ++i)
{
printf("%s\t\t", row[i]);
}
printf("\n");
}
mysql_free_result(res);
mysql_autocommit(mysql, 0);
int ret1 = mysql_query(mysql, "insert into dept values(61, '海军', '圣地玛丽乔亚')");
int ret2 = mysql_query(mysql, "insert into dept values(62, '七武海', '世界各地')");
if(ret1==0 && ret2==0 && ret3==0)
{
mysql_commit(mysql);
}
else
{
mysql_rollback(mysql);
}
mysql_close(mysql);