MySQL基本使用

连接过程:

创建MySQL对象、初始化MySQL对象、连接数据库、增删改查操作、关闭数据库操作。

1、创建MySQL对象,并且初始化。在写代码的时候不要忘记验证代码是否成功,或者写防御性代码。

    MYSQL* mysql = new MYSQL();
    MYSQL* pDB = mysql_init(mysql);

2、连接数据库

pDB = mysql_real_connect(pDB, "localhost", "root", "123456", "mysql", 3306, NULL, 0);

MYSQL *STDCALL 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 clientflag);

参数:

mysql:初始化过的MYSQL对象

host:服务器地址[ip、localhost、域名]

user:连接服务器所使用的用户

passwd:用户对于的密码

db:连接服务器时所使用的库,如果为空,则使用默认数据库mysql

port:连接服务器所用的端口,默认是3306,具体依据数据库来定

unix_socket:unix套接字连接方式,一般是指本地管道或者本地套接字,如果没有设为NULL

clientflag:一般情况下为0,除非你知道你要干什么,否则不要使用下面的内容:

  1. MySQL命令的执行

执行命令的过程:

  1. 发送SQL命令
  2. 获取SQL执行结果
  3. 解析获取到的结果

发送SQL命令接口:

int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);

q是SQL指令

length是指令的长度

向MySQL服务器发送SQL指令

获取SQL执行结果接口:

MYSQL_RES *STDCALL mysql_use_result(MYSQL *mysql);

释放结果接口:

void STDCALL mysql_free_result(MYSQL_RES *result);

获取结果集列的数量:

unsigned int STDCALL mysql_num_fields(MYSQL_RES *res);

获取结果集行的数量:

my_ulonglong STDCALL mysql_num_rows(MYSQL_RES *res);

取结果中的行接口:

MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);

获取每一行的长度接口:

unsigned long *STDCALL mysql_fetch_lengths(MYSQL_RES *result);

获取结果集中每一列的定义接口:

MYSQL_FIELD *STDCALL mysql_fetch_fields(MYSQL_RES *res);

MySQL如何创建数据仓库

CREATE DATABASE 数据仓库名;

数据库名称不要使用奇怪的或者特殊的符号,例如空格、路径符、引号

MySQL如何指派仓库权限给用户

GRANT 权限 ON databasename.tablename TO '用户名'@'范围'

删除库

DROP DATABASE 数据仓库名;

切换数据库

USE 数据仓库名;

部分代码参考

std::string sql = "CREATE DATABASE hello";//1.创建了一个hello的数据库
int ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
if (ret != 0) {
    std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
}
MYSQL_RES* result = mysql_use_result(mysql);
if (result != NULL) {
    show_result(result);
    mysql_free_result(result);
}
//授权
sql = "GRANT ALL ON hello.* TO 'hello'@'localhost';";//2.给予权限到hello库到用户上面
ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
if (ret != 0) {
    std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    return -1;
}
result = mysql_use_result(mysql);
if (result != NULL) {
    show_result(result);
    mysql_free_result(result);
}

sql = "USE hello;";//3.切换到hello这个库
ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
if (ret != 0) {
    std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    return -1;
}



sql = "CREATE TABLE IF NOT EXISTS `hello` (`编号` NVARCHAR(16) PRIMARY KEY,";
sql += "`age` INT NOT NULL DEFAULT 18";
sql += ")ENGINE=InnoDB DEFAULT CHARSET=utf8;";
ret = mysql_real_query(pDB, sql.c_str(), (unsigned long)sql.size());
if (ret != 0) {
    std::cout << "mysql error:" << mysql_error(pDB) << std::endl;
    return -1;
}

示例:

最后用完数据库之后不要忘记关闭并且delete掉在堆区创建的对象

本人才疏学浅,不足的地方请指正,希望对大家有所帮助

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值