C++PythonJavaMySQL数据库操作



简介

提供MySQL安装说明,以及在C++、Python、Java编程中的MySQL数据库环境配置,并且分别利用这三种语言对基础的MySQL数据库操作功能进行了实现。

引用博客:

  1. MySQL8.0.26安装配置教程(windows 64位) 作者:扑喽哈哈
  2. 使用C++实现MySQL数据库编程 作者:Liebeandy
  3. python3基础:操作mysql数据库 作者:小小小小人ksh
  4. JavaJDBC的使用详解 作者:盡盡

资源下载:

操作教程及代码文件


一、MySQL 安装

  1. MySQL 下载地址:

    https://dev.mysql.com/downloads/mysql/

  2. 解压到自定义目录(此处为C:\Program Files\MySQL,注意与4中配置文件中的目录路径一致)

  3. 在解压目录中创建初始化文件my.ini

  4. 编辑my.ini:

 [mysqld]# 设置3306端口port=3306# 设置mysql的安装目录   basedir=C:\Program Files\MySQL\mysql-8.0.28-winx64# 设置mysql数据库的数据的存放目录  datadir=C:\Program Files\MySQL\mysql-8.0.28-winx64\data# 允许最大连接数max_connections=200# 允许连接失败的次数。max_connect_errors=10# 服务端使用的字符集默认为utf8mb4character-set-server=utf8mb4# 创建新表时将使用的默认存储引擎default-storage-engine=INNODB# 默认使用“mysql_native_password”插件认证#mysql_native_passworddefault_authentication_plugin=mysql_native_password[mysql]# 设置mysql客户端默认字符集default-character-set=utf8mb4[client]# 设置mysql客户端连接服务端时默认使用的端口port=3306default-character-set=utf8mb4
  1. 以管理员身份打开CMD进入bin目录,输入命令
mysqld --initialize --console
  1. 记录初始密码(此处为:F%G6eT35!Kij,每个人不一样)

  2. 接着运行命令

mysqld --install

显示Service successfully installed.表示安装成功

8. 运行命令开启服务

net start mysql

显示MySQL服务已经启动成功

  1. 运行命令进入MySQL
mysql -u root -p

输入我们之前记录的初始密码:F%G6eT35!Kij(输入你们的密码)

  1. 输入命令修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
  1. 配置环境变量

    • STEP1:

    • STEP2:

  2. 安装完成

引用博客: MySQL8.0.26安装配置教程(windows 64位) 作者:扑喽哈哈


二、创建数据(之后的代码均用此数据演示)

  1. SQL语句
CREATE DATABASE class;
USE class;
CREATE TABLE student(id INT NOT NULL PRIMARY KEY AOTU_INCREMENT,name VARCHAR(10) NOT NULL,sex VARCHAR(7) NOT NULL,age INT NOT NULL
);
INSERT INTO student (name, sex, age) VALUES ('a', 'man', 20);
INSERT INTO student (name, sex, age) VALUES ('b', 'man', 19);
INSERT INTO student (name, sex, age) VALUES ('c', 'women', 19);
INSERT INTO student (name, sex, age) VALUES ('d', 'women', 20);
SELECT * FROM student;
  1. 查看结果

三、C++MySQLVisual Studio 2022

配置环境

  1. 鼠标右键点击项目名称,打开项目属性页

  2. 找到"C/C++"选项下的"常规"设置页,在"附加包含目录"中添加MySQL安装目录下的"include"文件夹路径(如果找不到"C/C++"选项,需要先创建一个源文件,编写一些代码调试一下,随便写点什么都行)

  3. 找到"链接器"选项下的"常规"设置页,在"附加库目录"中添加MySQL安装目录下的"lib"文件夹路径

  4. 找到"链接器"选项下的"输入"设置页,在"附加依赖项"中添加MySQL安装目录下的"lib"文件夹中的"libmysql.lib"文件路径,(注意不要错选成"libmysql.dll"文件)

  5. 找到"配置属性"选项下的"调试"设置页,在"环境"中添加MySQL安装目录下的"bin"文件夹目录,结尾加上英文的";"(有些博客中这里的路径前要加"PATH=",如果出问题都试试,应该是在安装MySQL配置系统环境变量导致的)

基本功能代码

  1. 包含头文件
# include <mysql.h>
# include<iostream>
using namespace std;
  1. 关闭数据库
void closeConnection(MYSQL* mysql) {//关闭数据库mysql_close(mysql);printf("\nDisconnect succeed.");
}
  1. 建立数据库连接
void createConnection(MYSQL* mysql, string user, string pwd, string database, string host = "localhost") {//初始化数据库mysql_init(mysql);//设置字符编码mysql_options(mysql, MYSQL_SET_CHARSET_NAME, "gbk");//建立数据库连接if (mysql_real_connect(mysql, &host[0], &user[0], &pwd[0], &database[0], 3306, NULL, 0) == NULL) {printf("Error: % s.\n", mysql_error(mysql));printf("Failed to connect.");closeConnection(mysql);exit(-1);}else {printf("Connect succeed.\n");}
}
  1. 执行SQL语句
int exeSql(MYSQL* mysql, string sql) {printf("\nExe SQL: %s.\n", &sql[0]);//执行SQL语句,返回执行结果,如果ret==0,则执行成功,否则失败int ret = mysql_query(mysql, &sql[0]);return ret;
}
  1. 查询
void query(MYSQL* mysql, string sql) {//查询数据int ret = exeSql(mysql, sql);if (ret != 0) {printf("Error: %s.\n", mysql_error(mysql));closeConnection(mysql);exit(-1);}else {//获取查询结果集MYSQL_RES* res = mysql_store_result(mysql);//输出查询结果内容cout << "\nid\t" << "name\t" << "sex\t" << "age" << endl;//查询记录MYSQL_ROW row;while (row = mysql_fetch_row(res)) {cout << row[0] << "\t";cout << row[1] << "\t";cout << row[2] << "\t";cout << row[3] << "\n";}//释放结果集mysql_free_result(res);printf("\nExe Succeed.\n");}
}

6.更新(增、删、改)

void update(MYSQL* mysql, string sql) {int ret = exeSql(mysql, sql);if (ret != 0) {printf("Error: %s.\n", mysql_error(mysql));closeConnection(mysql);exit(-1);}else {printf("\nExe Succeed.\n");}
}

7.测试main

int main() {MYSQL mysql = MYSQL();  //数据据库句柄createConnection(&mysql, "root", "root", "class");  //我的mysql账号密码均为“root”, 数据库名为“class”string sql01 = "SELECT * FROM student;";  //查询“student”表中的所有数据query(&mysql, sql01);string sql02 = "SELECT * FROM student WHERE sex='women';";  //查询“student”表中的女生数据query(&mysql, sql02);string sql03 = "INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);";  //向“student”表中插入一条记录update(&mysql, sql03);query(&mysql, sql01);string sql04 = "UPDATE student SET age=17 WHERE name='e';";  //更改“student”表中的一条记录update(&mysql, sql04);query(&mysql, sql01);string sql05 = "DELETE FROM student WHERE name='e';";  //删除名为e的学生记录update(&mysql, sql05);query(&mysql, sql01);string sql06 = "ALTER TABLE student AUTO_INCREMENT=1;";  //重置主键AUTO_INCREMENT,保证新增记录id的连续性update(&mysql, sql06);closeConnection(&mysql);  //关闭数据库连接return 0;
}
  1. 调试结果
Connect succeed.Exe SQL: SELECT * FROM student;.id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20Exe Succeed.Exe SQL: SELECT * FROM student WHERE sex='women';.id      name    sex     age
3       c       women   19
4       d       women   20Exe Succeed.Exe SQL: INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);.Exe Succeed.Exe SQL: SELECT * FROM student;.id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20
5       e       man     23Exe Succeed.Exe SQL: UPDATE student SET age=17 WHERE name='e';.Exe Succeed.Exe SQL: SELECT * FROM student;.id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20
5       e       man     17Exe Succeed.Exe SQL: DELETE FROM student WHERE name='e';.Exe Succeed.Exe SQL: SELECT * FROM student;.id      name    sex     age
1       a       man     20
2       b       man     19
3       c       women   19
4       d       women   20Exe Succeed.Exe SQL: ALTER TABLE student AUTO_INCREMENT=1;.Exe Succeed.Disconnect succeed.

引用博客:使用C++实现MySQL数据库编程 作者:Liebeandy


四、PythonMySQLPycharm2021 with Python3.6.8

安装包pymysql(此处使用Pycharm配合Anaconda环境进行安装,其他安装方式请自行搜索)

  1. 使用Pycharm的终端Terminal进行操作,进入工程配置的Python虚拟环境进行下载,输入一下命令
cd D:/Anaconda/envs/py36/Scripts  # 进入你的Python环境路径
pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple  # 使用清华镜像源进行下载
  1. 如下显示表示安装成功

基本功能代码

  1. 导入pymysql
import pymysql as mysql
  1. 关闭MySQL连接
def close_connection(conn):if conn:# 关闭游标cursor = conn.cursor()cursor.close()# 关闭连接conn.close()print('\nSucceed to disconnect mysql.')
  1. 建立MySQL连接
def create_connection(usr, pwd, db, host='localhost'):conn = Nonetry:# 尝试建立连接conn = mysql.connect(host='localhost', user=usr, passwd=pwd, db=db)# conn.select_db(db=db) 可用此条语句选择指定的数据库print('\nSucceed to connect mysql.')except:print('\nError: Failed to connect mysql.')exit(-1)return conn
  1. 执行SQL语句
def exe_sql(conn, sql):print('\nExe SQL: %s.' % sql)# 获取数据库游标cursor = conn.cursor()try:cursor.execute(sql)except:print('\nError: Failed to exe SQL of \'%s\'.' % sql)close_connection(conn)exit(-1)return cursor
  1. 查询
def query(conn, sql):cursor = exe_sql(conn, sql)# 获取查询结果集res = cursor.fetchall()print('\nid', 'name', 'sex', '   age')for row in res:for item in row:print(item, '\t', end='')print()print('\nSucceed to exe SQL.')
  1. 更新(增、删、改)
def update(conn, sql, commit=True):cursor = exe_sql(conn, sql)# update, delete, insert 操作需要手动 commit()# 如果不加 commit() 则当程序结束后数据库真实数据将不会发生更新# create, drop, alter 已内置 commit() 不需要手动commit# 此处我们默认将该函数视作仅供进行 update, delete, insert 操作, 具体由 commit 参数控制if commit:conn.commit()print('\nSucceed to exe SQL.')
  1. 测试main
if __name__ == '__main__':conn =  create_connection('root', 'root', 'class')  # 建立数据库连接sql01 = 'SELECT * FROM student;'  # 查询student表中的所有记录query(conn, sql01)sql02 = 'SELECT * FROM student WHERE sex=\'women\';'  # 查询student表中的女生信息query(conn, sql02)sql03 = 'INSERT INTO student (name, sex, age) VALUES (\'e\', \'man\', 23);'  # 向student表中插入一条记录update(conn, sql03)query(conn, sql01)sql04 = 'UPDATE student SET age=17 WHERE name=\'e\';'  # 更新student表中的一条记录update(conn, sql04)query(conn, sql01)sql05 = 'DELETE FROM student WHERE name=\'e\';'  # 删除student表中的一条记录update(conn, sql05)query(conn, sql01)sql06 = 'ALTER TABLE student AUTO_INCREMENT=1;'  # 重置主键AUTO_INCREMENT,保证新增记录id的连续性update(conn, sql06, commit=False)close_connection(conn)  # 关闭数据库连接
  1. 测试结果
Succeed to connect mysql.Exe SQL: SELECT * FROM student;.id name sex    age
1   a   man     20
2   b   man     19
3   c   women   19
4   d   women   20  Succeed to exe SQL.Exe SQL: SELECT * FROM student WHERE sex='women';.id name sex    age
3   c   women   19
4   d   women   20  Succeed to exe SQL.Exe SQL: INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);.Succeed to exe SQL.Exe SQL: SELECT * FROM student;.id name sex    age
1   a   man     20
2   b   man     19
3   c   women   19
4   d   women   20
5   e   man     23  Succeed to exe SQL.Exe SQL: UPDATE student SET age=17 WHERE name='e';.Succeed to exe SQL.Exe SQL: SELECT * FROM student;.id name sex    age
1   a   man     20
2   b   man     19
3   c   women   19
4   d   women   20
5   e   man     17  Succeed to exe SQL.Exe SQL: DELETE FROM student WHERE name='e';.Succeed to exe SQL.Exe SQL: SELECT * FROM student;.id name sex    age
1   a   man     20
2   b   man     19
3   c   women   19
4   d   women   20  Succeed to exe SQL.Exe SQL: ALTER TABLE student AUTO_INCREMENT=1;.Succeed to exe SQL.Succeed to disconnect mysql.

引用博客:python3基础:操作mysql数据库 作者:小小小小人ksh


五、JavaMySQLIDEA with JDBC

JDBC环境配置

  1. jar包下载地址(选择Platform Independent版本):

  2. 打开Project Structure面板

  3. 进入Modules设置页面的Dependencies栏,点击+号添加jar

  4. 选择你的jar包解压路径

  5. 勾选导入的jar包,并点击ok

  6. 配置完成

基本功能代码

  1. 导入依赖包
import java.sql.*;
  1. 创建类
public class SQLMan {// 数据库连接对象private Connection conn = null;private String user;private String password;private String database;// 驱动名称(部分博客中的驱动名词为旧版本“com.mysql.jdbc.Driver”)private String driver_name = "com.mysql.cj.jdbc.Driver";// MySQL数据地址private String url;public SQLMan(String usr, String pwd, String db){this.setUser(usr);this.setPassword(pwd);this.setDatabase(db);String url = "jdbc:mysql://localhost:3306/"+this.database+"?characterEncoding=gbk";this.setUrl(url);}public String getUser() {return user;}public void setUser(String user) {this.user = user;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getDatabase() {return database;}public void setDatabase(String database) {this.database = database;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}
}
  1. 关闭连接
public void closeConnection() throws SQLException {if(this.conn!=null){this.conn.close();System.out.println("\nSucceed to disconnect with mysql.");}
}
  1. 建立连接
public void createConnection(){try {// 加载数据库驱动名Class.forName(this.driver_name);// 建立数据库连接this.conn = DriverManager.getConnection(this.url, this.user, this.password);System.out.println("\nSucceed to connect mysql.");}catch (Exception e){System.out.println("\nError: Failed to connect mysql.");System.exit(-1);}
}
  1. 查询
public void query(String sql) throws SQLException {if(this.conn!=null){System.out.format("\nExe SQL: %s.\n", sql);// Statement 对象用于执行SQL语句Statement stmt = null;// ResultSet 结果集对象ResultSet res = null;try{stmt = this.conn.createStatement();// 执行查询语句res = stmt.executeQuery(sql);System.out.format("\n%-15s%-15s%-15s%-15s\n", "id", "name", "sex", "age");while(res.next()){int id = res.getInt("id");String name = res.getString("name");String sex = res.getString("sex");int age = res.getInt("age");System.out.format("%-15d%-15s%-15s%-15d\n",  id, name, sex, age);}res.close();stmt.close();}catch (Exception e){System.out.format("\nError: Failed to exe SQL: %s.\n", sql);this.closeConnection();System.exit(-1);}System.out.println("\nSucceed to exe SQL.");}else{System.out.println("\nPlease create connect with mysql first.");}
}
  1. 更新(增、删、改)
public void update(String sql) throws SQLException {if(this.conn!=null){System.out.format("\nExe SQL: %s.\n", sql);Statement stmt = null;try{stmt = this.conn.createStatement();// 执行update、delete、insert语句stmt.executeUpdate(sql);stmt.close();}catch (Exception e){System.out.format("\nError: Failed to exe SQL: %s.\n", sql);this.closeConnection();System.exit(-1);}System.out.println("\nSucceed to exe SQL.");}else{System.out.println("\nPlease create connect with mysql first.");}
}
  1. 测试main
public static void main(String[] args) throws SQLException {SQLMan sqlMan = new SQLMan("root", "root", "class");  // 创建类实例sqlMan.createConnection();  // 建立数据库连接String sql01 = "SELECT * FROM student;";  // 查询student表中的所有记录sqlMan.query(sql01);String sql02 = "SELECT * FROM student WHERE sex='women';";  // 查询student表中的女生信息sqlMan.query(sql02);String sql03 = "INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);"; // 向student表中插入一条记录sqlMan.update(sql03);sqlMan.query(sql01);String sql04 = "UPDATE student SET age=17 WHERE name='e';";  // 更新student表中的一条记录sqlMan.update(sql04);sqlMan.query(sql01);String sql05 = "DELETE FROM student WHERE name='e';";  // 删除student表中的一条记录sqlMan.update(sql05);sqlMan.query(sql01);String sql06 = "ALTER TABLE student AUTO_INCREMENT=1;";  // 重置主键AUTO_INCREMENT,保证新增记录id的连续性sqlMan.update(sql06);sqlMan.closeConnection();  // 关闭数据库连接}
  1. 测试结果
Succeed to connect mysql.Exe SQL: SELECT * FROM student;.id             name           sex            age
1              a              man            20
2              b              man            19
3              c              women          19
4              d              women          20             Succeed to exe SQL.Exe SQL: SELECT * FROM student WHERE sex='women';.id             name           sex            age
3              c              women          19
4              d              women          20             Succeed to exe SQL.Exe SQL: INSERT INTO student (name, sex, age) VALUES ('e', 'man', 23);.Succeed to exe SQL.Exe SQL: SELECT * FROM student;.id             name           sex            age
1              a              man            20
2              b              man            19
3              c              women          19
4              d              women          20
5              e              man            23             Succeed to exe SQL.Exe SQL: UPDATE student SET age=17 WHERE name='e';.Succeed to exe SQL.Exe SQL: SELECT * FROM student;.id             name           sex            age
1              a              man            20
2              b              man            19
3              c              women          19
4              d              women          20
5              e              man            17             Succeed to exe SQL.Exe SQL: DELETE FROM student WHERE name='e';.Succeed to exe SQL.Exe SQL: SELECT * FROM student;.id             name           sex            age
1              a              man            20
2              b              man            19
3              c              women          19
4              d              women          20             Succeed to exe SQL.Exe SQL: ALTER TABLE student AUTO_INCREMENT=1;.Succeed to exe SQL.Succeed to disconnect with mysql.

引用博客:JavaJDBC的使用详解 作者:盡盡

C++、Python、Java的MySQL数据库操作相关推荐

  1. JAVA 连接MYSQL数据库操作

    String strCon = "jdbc:mysql://122.114.147.148:3306/ddd"; //连接字符串String strUser = "数据库 ...

  2. MySQL数据库操作全集

    2019独角兽企业重金招聘Python工程师标准>>> MySQL数据库操作基础 显示数据库 show databases; 判断是否存在数据库database_name,有的话先删 ...

  3. Python - MySQL数据库操作

    Python2 中使用模块 MySQLdb 模块处理数据库的操作,在Python3中使用 PyMySQL Python2 - 数据库的操作 1. MySQLdb 安装 yum -y install M ...

  4. python实现数据库事务回滚_使用Python脚本实现MySQL误操作的快速回滚

    1.简介 在Oracle数据库中,当一个误操作被提交后,我们可以通过Oracle提供的闪回功能将表闪回至误操作之前的状态.mysql中没有原生的flushback功能,DBA误操作时,传统的恢复方式是 ...

  5. python爬虫开发数据库设计入门经典_Python3实现的爬虫爬取数据并存入mysql数据库操作示例...

    本文实例讲述了Python3实现的爬虫爬取数据并存入mysql数据库操作.分享给大家供大家参考,具体如下: 爬一个电脑客户端的订单.罗总推荐,抓包工具用的是HttpAnalyzerStdV7,与chr ...

  6. python操作数据库的几种方法_python对mysql数据库操作的三种不同方式

    原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...

  7. mysql 使用java代码进行操作系统_【MySQL 05】使用Java对MySQL进行操作(创建数据库)...

    JDBC连接数据库: 1.加载JDBC驱动程序 2.提供JDBC连接的URL 3.创建数据库的连接 4.创建一个Statement 5.执行SQL语句 6.处理结果 7.关闭JDBC对象 1.加载JD ...

  8. Python封装MySQL数据库操作(pymysql)

    Python封装MySQL数据库操作(pymysql) # 连接MySQL class DbManager(object):# 构造函数def __init__(self):self.conn = N ...

  9. python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...

    本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...

最新文章

  1. 【直播回放】新手如何入门并学习自然语言处理
  2. 【前端就业课 第一阶段】HTML5 零基础到实战(十一)canvas 基础
  3. Android 自定义View实现QQ运动积分抽奖转盘
  4. python特征递归消除
  5. 一个列中多行求和_excel表格制作,Excel表格的基本操作,包含制作一个表格10方面的知识(1)...
  6. java sqlite 创建_关于Java:创建3个由sqlite数据库填充的微调器
  7. cif t t操作流程图_T+操作手册
  8. VUEX封装module
  9. Windows操作系统,启动Tomcat之后DOS窗口乱码处理
  10. [译]用javascript实现一门编程语言-语言构想
  11. 七牛切片视频php,音视频切片(HLS)
  12. apollo配置中心搭建
  13. Android Studio创建安卓虚拟机并测试app
  14. Xmind模板文档分享——生活计划(3)
  15. 初识python之汇率转换篇
  16. 如何站在巨人的肩膀上学习
  17. 第三周——小小大佬带飞队
  18. Google的地球日图标08版
  19. win10 eclipse适配笔记本4K屏幕
  20. win10打开计算机加载很慢,win10电脑文件夹打开特别慢怎么回事 文件夹假死问题快速解决步骤...

热门文章

  1. 1.2计算机基础:比特和字节
  2. 互联网与神经学的交叉对比研究--论文全文
  3. Gaea源码阅读(五):C客户端
  4. NLP项目(二)——拼写纠错
  5. 画图工具,流程图、思维导图、原型图、UML、网络拓扑图等
  6. mac 使用常用快捷键
  7. HTML和CSS常用标签
  8. SEO关键字的研究和分析
  9. C++ sqlite3 0x00007FF9DA42F621 (ucrtbased.dll)处(位于 TestSqlite.exe 中)引发的异常: 0xC0000005: 读取位置 0x000000
  10. 叠罗汉 农场的N头奶牛喜欢玩叠罗汉游戏,就是几头奶牛1头奶牛接着1头奶牛的站成一柱子形状。不过奶牛的力量不一样,用数值Ci表示第i头奶牛它的上面最多可以站多少头奶牛,问这些奶牛最少可以站成几个柱子形状