项目:C++数据库mysql

安装

1. mysql server 8.0
2. 初始化数据库:mysqld --initialize --console
3. mysql服务
	1. 安装服务:mysqld install mysql8.0
	2. 启动服务:net start mysql8.0
4. 登录:mysql -uroot -p
5. 重设密码:ALTER USER "root@localhost" IDENTIFIED BY "123456"
6. 数据库远程访问权限
	1. use mysql;
	2. SELECT * FROM user;
	3. UPDATE USER SET host="%" where user="root";
	4. flush privileges;
7. 图形客户端:workbench

操作流程

1. 数据库初始化
mysql_init(MYSQL*mysql);
2. 连接
MYSQL*mysql_real_connect(MYSWQL *mysql, const char *host, unsigned int port, const char *unix_socket, unsigned long client_flag)
失败返回NULL
3. 断开重连
bool reconnect = 0;
mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect)
4. 关闭
mysql_close(MYSQL*mysql);
5. 执行函数
int mysql_query(MYSQL*mysql, const char *query);
mysql:连接句柄
query:sql语句
成功返回0
6. 查询
	1. 执行mysql_query
	2. 取回结果集
	MYSQL_RES *mysql_store_result(MYSQL *mysql)
	MYSQL_RES *结构体指针
	3.  获取行
	MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
	MYSQL_ROW:char **,一行的数据变成多行一列的二维数组
	4. 释放结果集
	void mysql_free_result(MYSQL_RES *result) 
	5. 获取字段
	MYSQL_FIELD *myswl_fetch_fields(MYSQL_RES *result)
	6. 字段个数
	unsigned int mysql_num_fields(MYSQL_RES *result);
7. 设置字符集
int mysql_set_charrater_set(MYSQL *mysql, char *name)
8. 预处理(提高效率)
用于需要多次执行的语句,仅解析一次SQL语句,每次执行预处理只需要传入参数。预处理语句使用二进制协议。
第一次需要初始化,再次使用只需要赋值/执行
	1. 初始化:mysql_stmt_init
	2. 预处理:mysql_stmt_prepare
	3. 参数个数:mysql_stmt_param_count
	4. 绑定变量:mysql_stmt_bind_param
	buffer存放的是参数变量的地址(内存地址映射),buffer_type数据类型,is_null是否为空,lenght长度(当为varchar时有用,否则0)
	5. 执行:mysql_stmt_execute
	6. 预处理影响条数:mysql_stmt_affected_rows
	7. 错误:mysql_stmt_error(MYSQL *mysql)
9. 一次性执行多条sql语句
函数
存储过程
10. 事务处理
开启事务:start transaction
手动commit:SET AUTOCOMMIT=0; 需要执行commit;
自动commit:SET AUTOCOMMIT=1;
回滚:ROLLBACK;

实例

// 初始化
MYSQL mysql;
mysql_init(&mysql);
// mysql = mysql_init(NULL);

// 连接
const char *host = “127.0.0.1”;
const char *user = “root”;
const char *pass = “123456”;
const char *db = “mysql”;
mysql_real_connect(&mysql, host, usr, pass, db, 3306, 0, 0);

// 插入
char sql[256] = {0};
strcpy(sql, “insert into table students value(1)”);
if(mysql_query(&mysql, sql) != 0) {
cout << mysql_error(&mysql);
}

// 查询
strcpy(sql, “select * from students”);
if(mysql_query(&mysql, sql) != 0) {
cout << mysql_error(&mysql);
}
// 获取结果集
MYSQL_RES *res = mysql_store_result(mysql);
MYSQL_ROW row;
if(res != NULL) {
// 字段个数
unsigned int num mysql_num_fields(res);
// 字段
MYSQL_FIELD *fields = myswl_fetch_fields(res);
for(int i=0; i<num; i++) {
cout << row[i];
}
// 一行
while(row = mysql_fetch_row(res)) != NULL) {
// 遍历结果集
for(int i=0; i<num; i++) {
cout << row[i];
}
}
// 释放结果集
mysql_free_result(res);
}

// 断开
mysql_close(mysql);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值