语言连接数据库
MySQL和主语言通常使用一些特定的API和库进行连接,以实现对MySQL数据库的操作。下面是C++与MySQL的链接。
1.把libmysql.dll与libmysql.lib文件复制到工程目录下
路径:C:\Program Files\MySQL\MySQL Server 8.0\lib
2.添加libmysql.lib:
项目右键-->属性-->连接表-->输入-->附加依赖项-->输入libmysql.lib
3.添加include目录:C:\Program Files\MySQL\MySQL Server 8.0\include
项目右键-->属性-->C/C++-->附加包含目录-->输入include路径
4.包含头文件
#include<WinSock.h>
#include<mysql.h>
Mysql表的建立
建立数据库mydb,在其下建立user表:
create databases mydb;
create table user(
id int NOT NULL primary key auto_increment,
account varchar(255) NULL unique,
password varchar(255) NOT NULL,
online int NOT NULL default 0
);
在VS中进行增删改查相关操作
MYSQL m;//mysql连接
MYSQL_RES* res;//查询结果集
MYSQL_ROW row;//二维数组存放数据
//初始化数据库
mysql_init(&m);
//设置编码方式
mysql_options(&m, MYSQL_SET_CHARSET_NAME, "gbk");
连接数据库:
if (mysql_real_connect(&m, "localhost", "root", "Bzy13488359893.", "mydb", 3306, NULL, 0)) {
//主机,用户名,密码,数据库名,端口
printf("数据库连接成功\n");
}
else {
printf("数据库连接失败:%s\n", mysql_error(&m));//输出错误信息
}
向数据库中插入数据:
const char* sql = "insert into user values(6,'4bzy','123456',0),(8,'5bzy','123456',0)";
if (mysql_query(&m, sql)) {
printf("数据库插入失败:%s\n", mysql_error(&m));//输出错误信息
}
else {
printf("数据库插入成功\n");
}
删除数据:
const char* sql02 = "delete from user where account='4bzy'";
if (mysql_query(&m, sql02)) {
printf("删除失败:%s\n", mysql_error(&m));//输出错误信息
}
else {
printf("删除成功\n");
}
更新数据:
const char* sql03 = "update user set id=4 where account='5bzy'";
if (mysql_query(&m, sql03)) {
printf("更新失败:%s\n", mysql_error(&m));//输出错误信息
}
else {
printf("更新成功\n");
}
查询数据:
const char* sql = "select * from user";
if (mysql_query(&m, sql)) {
printf("查询失败:%s\n", mysql_error(&m));//输出错误信息
}
else {
printf("查询成功\n");
}
res = mysql_store_result(&m);//获取查询结果集
if (res) {
printf("已获取\n");
}
else {
printf("未获取:%s\n", mysql_error(&m));//输出错误信息
}
row = mysql_fetch_row(res);//打印数据
printf("id\taccount\tpassword\tonline\n");
while (row) {
printf("%s\t%s\t%s\t%s\n",row[0],row[1],row[2],row[3]);
row = mysql_fetch_row(res);
}
释放数据:
mysql_free_result(res);//释放结果集
mysql_close(&m);//关闭数据库
完整代码:
#include<iostream>
#include<WinSock.h>
#include<mysql.h>
using namespace std;
/*
语言连接数据库
1.把libmysql.dll与libmysql.lib文件复制到工程目录下
路径:C:\Program Files\MySQL\MySQL Server 8.0\lib
2.添加libmysql.lib:
项目右键-->属性-->连接表-->输入-->附加依赖项-->输入libmysql.lib
3.添加include目录:C:\Program Files\MySQL\MySQL Server 8.0\include
项目右键-->属性-->C/C++-->附加包含目录-->输入include路径
4.包含头文件
#include<WinSock.h>
#include<mysql.h>
*/
void test() {
printf("test\n");
MYSQL m;//mysql连接
MYSQL_RES* res;//查询结果集
MYSQL_ROW row;//二维数组存放数据
//初始化数据库
mysql_init(&m);
//设置编码方式
mysql_options(&m, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库:
if (mysql_real_connect(&m, "localhost", "root", "Bzy13488359893.", "mydb", 3306, NULL, 0)) {
//主机,用户名,密码,数据库名,端口
printf("数据库连接成功\n");
}
else {
printf("数据库连接失败:%s\n", mysql_error(&m));//输出错误信息
}
//向数据库中插入数据:
//const char* sql = "insert into user values(6,'4bzy','123456',0),(8,'5bzy','123456',0)";
//if (mysql_query(&m, sql)) {
// printf("数据库插入失败:%s\n", mysql_error(&m));//输出错误信息
//}
//else {
// printf("数据库插入成功\n");
//}
//删除数据
//const char* sql02 = "delete from user where account='4bzy'";
//if (mysql_query(&m, sql02)) {
// printf("删除失败:%s\n", mysql_error(&m));//输出错误信息
//}
//else {
// printf("删除成功\n");
//}
//更新数据
//const char* sql03 = "update user set id=4 where account='5bzy'";
//if (mysql_query(&m, sql03)) {
// printf("更新失败:%s\n", mysql_error(&m));//输出错误信息
//}
//else {
// printf("更新成功\n");
//}
//查询数据:
//const char* sql = "select * from user";
//if (mysql_query(&m, sql)) {
// printf("查询失败:%s\n", mysql_error(&m));//输出错误信息
//}
//else {
// printf("查询成功\n");
//}
//res = mysql_store_result(&m);//获取查询结果集
//if (res) {
// printf("已获取\n");
//}
//else {
// printf("未获取:%s\n", mysql_error(&m));//输出错误信息
//}
//row = mysql_fetch_row(res);//打印数据
//printf("id\taccount\tpassword\tonline\n");
//while (row) {
// printf("%s\t%s\t%s\t%s\n",row[0],row[1],row[2],row[3]);
// row = mysql_fetch_row(res);
//}
//释放资源
//mysql_free_result(res);//释放结果集
//mysql_close(&m);//关闭数据库
}
int main() {
cout << "main" << endl;
test();
getchar();
return 0;
}