1. 安装
sudo apt-get install mysql-server mysql-client libmysql++-dev
2. 查看默认登录信息
sudo cat /etc/mysql/debian.cnf
输出:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = cPzSgabV9LvjWwi0
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = cPzSgabV9LvjWwi0
socket = /var/run/mysqld/mysqld.sock
上面输出信息的host、user、password是Mysql默认的主机地址、用户名、密码。这些在使用C++连接数据库的函数mysql_real_connect时会用到。
3.终端操作数据库
- 登录数据库
sudo mysql -u root -p
- 查看已有数据库列表
show databases;
- 创建名字为library的数据库
CREATE DATABASE library;
- 使用名字为library的数据库
use library;
- 查看名字为library的数据库包含哪些表
show tables;
- 创建名字为book和reader的两个表
CREATE TABLE book(name char(20), author char(20)); CREATE TABLE reader(name char(20), date int(10), sex char(5));
- 查看名字为book的表的内容
SELECT * FROM book;
- 向名字为book的表中插入内容
INSERT INTO book VALUES('c language', 'niuren');
- 向名字为reader的表中插入内容
INSERT INTO reader VALUES('kumata', 20180530, 'man');
- 向名字为reader的表中插入缺省内容
INSERT INTO reader(name, sex) VALUES('kusada', 'man');
- 查看名字为book的表的结构
desc book;
- 删除名字为book的表
DROP TABLE book;
- 查看名字为library的数据库包含哪些表
- 删除名字为library的数据库
drop database library;
- 从终端退出
exit
4. 使用C++读取数据库
#include <iostream>
#include <mysql/mysql.h>
#include <stdlib.h>
#include <iomanip>
using namespace std;
int main(int argc, char* argv[]) {
MYSQL mysql;
mysql_init(&mysql);
// 连接数据库library
if(mysql_real_connect(&mysql, "localhost", "debian-sys-maint", "cPzSgabV9LvjWwi0", "library", 3306, NULL, 0) == NULL) {
cout << "Connect Error: " << mysql_error(&mysql) << endl;
exit(0);
}
// 查看library数据库的reader表的内容
string sql = "select * from reader;";
if(mysql_query(&mysql, sql.c_str()) != NULL) {
cout << "Query Error: " << mysql_error(&mysql) << endl;
exit(0);
}
// 获取查询结果
MYSQL_RES *res = mysql_store_result(&mysql);
if(res == NULL) {
cout << "Query nothing: " << mysql_error(&mysql) << endl;
exit(0);
}
// 输出查询结果
MYSQL_ROW row;
while(row = mysql_fetch_row(res)) {
for(int i=0; i<mysql_num_fields(res); i++)
cout << left << setw(10) << row[i] << left << setw(3) << ' ';
cout << endl;
}
mysql_free_result(res);
mysql_close(&mysql);
return 0;
}