前言:
相信大家都知道怎么在MySQL里面使用SQL语句对数据库进行一个增删改查。
小伙伴们有没有想过有没有用其他语言对MySQL进行操作呢?
这个回答肯定是有的,就比如今天带给大家的两种语言操作MySQL进行增删改查!!!
经过我上篇的 Java和Python各自链接MySQL的方法相信大家应该掌握了这两种语言链接MySQL的方法了,而今天带给大家的文章就是通过Java和Python对MySQL的增删改查。
Java对MySQL的操作
环境配置
使用工具:
IDEA,MySQL-8.0,MySQL驱动(mysql-connector-java-8.0.27)等。
其他配置:
这个可以参考我的上一篇文章,上篇有具体的环境配置介绍哦!
增添操作
注:Java下面的测试用例都是使用DriverManager链接MySQL进行增删改查操作
首先在使用Java链接到MySQL后我们能使用java操作我们所需要的功能。
那我们首先来进行MySQL的增添操作。
public static void main(String[] args) throws SQLException { Driver driver = new com.mysql.cj.jdbc.Driver(); String url = "jdbc:mysql://localhost:3306/表名"; String user = "root"; String password = "数据库密码"; DriverManager.registerDriver(driver); Connection conn = DriverManager.getConnection(url,user,password); System.out.println(conn); //对MySQL数据库的添加操作 //预编译sql语句 //注:dl是一个数据库表名 String sql = "INSERT INTO dl (账号,密码) VALUE (?,?)"; PreparedStatement preparedStatement = conn.prepareStatement(sql); //填充占位 preparedStatement.setInt(1,123); preparedStatement.setInt(2,123); //执行操作 preparedStatement.execute(); //关闭操作 preparedStatement.close(); conn.close(); System.out.println("添加成功!"); }
结果:
及操作成功!!!
删除操作
在Java里面对MySQL的增删改操作都类似的,只需要更换操作的SQL语句就可!!!
代码段:
public class sql_delete { public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); System.out.println("请输入要删除的账号:"); int user = scanner.nextInt(); Connection connection = JDBCtils.getConnection(); String sql = "DELETE FROM dl WHERE 账号 = ? ;"; PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1,user); ps.execute(); JDBCtils.closeREsource(connection,ps); System.out.println("删除成功!"); } }
结果:
我们能看到表中的123已经被删除了!
修改操作
修改也是换汤不换药!
原来的表内容:
我们操作就第一个账号为666的吧!
代码段:
public class alter_sql { public static void main(String[] args) throws Exception{ Connection conn = JDBCtils.getConnection();//使用写好了的链接工具返回链接 Scanner scanner = new Scanner(System.in);//创建输入 System.out.println("请输入需要修改的账号:"); int zh = scanner.nextInt(); System.out.println("请输入需要修改的密码:"); int mm = scanner.nextInt(); String sql = "UPDATE dl SET 密码 = ? WHERE 账号 = ?";//SQL语句 PreparedStatement ps = conn.prepareStatement(sql);//执行SQL语句 ps.setInt(1,zh);//填充占位符 ps.setInt(2,mm); ps.execute();//返回是否有结果集 JDBCtils.closeREsource(conn,ps);//导入之前写好的conn和ps关闭功能函数。 System.out.println("修改成功!"); } }
执行结果:
运行成功,表示代码完全执行!!!
查询操作
到了今天的重头戏了——使用Java来对MySQL进行查询并返回到Java中。
这个步骤和上面的增删改可能有一些地方不同。
我我来给大家一步步的讲解哦,如果有哪个地方不对还请下伙伴们斧正哦!
通过上面的代码,相信大家都能看到在执行操作的时候都会有一个ps.excute这个代码,而其是用在对MySQL的增删改操作时使用的。
而增删改和查询的操作不同的地方就是使用不同的excute对MySQL进行操作。所以在这就需要引入一个新的名称—executeQuery。
executeQuery是Java操作MySQL查询时使用的功能函数!
补充:
executeQuery:主要执行select语句,返回值为ResultSet结果集。
execute:运行sql语句,返回值为是否有结果集。
结果集对象的创建:
ResultSet resultSet= ps.executeQuery();
通过executeQuery( )返回的结果集对象后,我们能使用resultSet.next()来进行一个判断是否当前行有返回结果集。我们可以通过来输出MySQL的查询结果。
if(resultSet.next()){//next()判断结果集是否有下一条数据。 int id = resultSet.getInt(1); int mima = resultSet.getInt(2); System.out.println("id = "+ id +",mima:"+mima); }else { System.out.println("没有该数据!!"); }
输出所有数据使用while即可。
while(resultSet.next()){//next()判断结果集是否有下一条数据。 int id = resultSet.getInt(1); int mima = resultSet.getInt(2); System.out.println("id = "+ id +",mima:"+mima); }else { System.out.println("没有该数据!!"); }
完整测试代码:
public static void main(String[] args) throws Exception{ Connection conn = JDBCtils.getConnection(); String sql = "select 账号,密码 from dl where 账号 = 666 "; PreparedStatement ps = conn.prepareStatement(sql); //换方法 ,executeQuery()查询数据库用的方法 ResultSet resultSet= ps.executeQuery(); if(resultSet.next()){//next()判断结果集是否有下一条数据。 int id = resultSet.getInt(1); int mima = resultSet.getInt(2); System.out.println("id = "+ id +",mima:"+mima); }else { System.out.println("没有该数据!!"); } }
测试结果:
Python对MySQL的操作
环境配置
使用工具:
Pycharm,MySQL—8.0,pymysql库。
其他配置:
这个可以参考我的上一篇文章,上篇有具体的环境配置介绍哦!
增添操作
通过上面的Java对MySQL进行增添操作,大家觉得Python是怎对MySQL进行添加操作的呢?
那么今天就给大家带来MySQL的增添操作!
工具包的导入:
import pymysql#Python链接MySQL的一个工具包。
创建链接:
本操作是在上一篇文章就介绍过了,不会的同学可以参考我的上一篇文章哦!
SQL语句的执行和提交:
相比于Java,Python在执行SQL语句后还会有一个commit。通过查询API我们直到commit的功能是 将更改提交到稳定存储。
请注意:
如果数据库支持自动提交特性,这必须在开始时关闭。可以提供一个接口方法来重新打开它。
cur.execute(sql) connection.commit()
在这里在给大家补充一个回滚功能—rollback(),在Python中当链接MySQL时如果没有链接成功的话我们选择的使用它。
让其进行一个回滚,直到链接成功。
rollback():这个方法是可选的,因为不是所有的数据库都提供事务支持。
如果数据库确实提供了事务,此方法将导致数据库回滚到任何挂起事务的开始。关闭连接而不首先提交更改将导致执行隐式回滚。
代码的演示:
#代码是我之前一个项目的部分代码,因为本文设计到数据库,所以就直接给大家拿出来做例子。 #在数据库中增加学生信息 def add_sql(stu): connection = get_connect() cur = connection.cursor(cursor=pymysql.cursors.DictCursor) sql = 'insert into student(学号,姓名,性别,电话) values("%s","%s","%s", "%s")' sid = stu['学号'] name = stu['姓名'] sex = stu['性别'] iphone = stu['电话'] try: cur.execute(sql%(sid,name,sex,iphone)) connection.commit() except Exception as e: connection.rollback() raise e finally: connection.close()
这个结果的操作我就不给大家看了,大家可以自己试试哦。
删除操作
和Java类似Python的增删改都是需要对SQL语句进行改变,所以我就直接给大家上代码了。
import pymysql s=int(input('输入学号;')) conn = pymysql.connect(host='localhost',user = "root",passwd = "数据库密码",database=数据库名称) cursor = conn.cursor() sql = 'delete from student where 学号=%s' try: cursor.execute(sql % s) conn.commit() except Exception as e: conn.rollback() raise e finally: conn.close()
修改操作
def xname(): xh = int(input('学号:')) name = input('请输入姓名:') arg = (name,xh) sql = "update student set 姓名 = '%s' where 学号 = %s " result = cur.execute(sql%arg) print(result) if result == 1:#判断是否修改成功,返回的是1或0. print('修改成功!') else: print('修改失败!') conn.commit() cur.close() conn.close()
查询操作
在Python中查询的话我们需要在游标的基础上接收结果集。
是通过fetchall,获取所有行。然后通过数据的可视化对用户进行展示即可。
我们来通过一个完整的例子来讲解查询操作:
import pymysql#导入数据库 s = input('请输入查询姓名:') conn = pymysql.connect(host='localhost',user = "root",passwd = "数据库密码",database='stu') cur = conn.cursor()#获取游标 sql = 'select * from student where 姓名 ="%s" ;'#创建SQL语句 cur.execute(sql%s)#准备SQL语句 f = cur.fetchall()#获取结果集 for i in f:#输出结果集 print(i) cur.close()#关闭游标 conn.commit()#提交事务 conn.close()#关闭连接
我们可以看一下我们的查询结果: