java连通、操作mysql数据库

文章目录

  • java连通、操作mysql数据库
  • java连通数据库
    • 准备工作:
    • eclipse中添加包:
      • 一个eclipse报错的改法
    • 连接数据库:
  • java操作数据库
    • 对数据的操作
      • 对数据进行检索:
      • 数据删除:
  • 因为非羽也是一名初学者,所以可能在实现方面也存在许多不完善的地方,欢迎各位学友斧正。
  • 最新代码:

  在最近这段时间,也是对java与数据库之间的联系进行了一些尝试。在前期,为了方便,都将以idea的开发环境与数据库进行联系。因为后期有进行java web与数据库联系的尝试,所以后期也会提到如何用eclipse进行类似操作(因为非羽是使用的mysql的8.0以上版本,所以在这里记录的信息可能对于8.0以上的版本更为有效)。这里前面的代码大部分只是起到演示作用配合解释,最后的“最新代码”才可以真正有效运行。
  软件配置:IntelliJ IDEA Community Edition 2020.1.2 x64
       MySQL Workbench 8.0 CE
       eclipse2019-12

java连通数据库

准备工作:

  首先,我们需要下载一个驱动包,这个驱动包的接口(功能大概类似于处在java与mysql之间的一个执行指令的机器人)。这个接口我们可以在下面这个链接中下载:
  java驱动下载
  下载好后记得将其储存在一个方便记忆或者查找的地方,有助于我们等会的利用。
  打开idea,新创一个project。
  下面开始分步演示插入这个驱动包。
step 1:点击“file”中的“Project Structure”(或者直接在Ctrl+Alt+Shift+S)

step 2:找到“libraries”,点击“+”号,再点击“java”。

step  3:找到驱动包,点击“ok”,最后点击一个“apply”或者“ok”(两者作用差不多)。

step  4:在选择project后再点击ok


step  5:最后点击一个“apply”或者“ok”(两者作用差不多)。

  在完成上述的操作后,我们可以看到在我们的project栏目里有这样一个内容。就代表你已经成功插入了驱动包。

eclipse中添加包:

  这里我就假定你们已经自己创建好一个project了,这个过程还是比较简单的。然后直接开始引入数据包。
Step 1:
  右击你想要加包的project名,在这里,我的叫"try"。点击最下面的"properties"(这个地方我一点截图它就不显示那个目录了,就没有截图,但相信各位应该可以自己搞定)。
Step 2:
  可以直接看到有一个叫java build path的东西。点击之后出现下面这个界面,当然,你的没有那个mysql的包。

Step 3:
  点击“classpath”,你可以看到右边的那些键由灰转黑。

Step 4:
  点击“add esternal jars…”(加入外面的包)。可以出现一个找包的界面,找到你想要的那个包。

Step 5:
  点击“apply and close”,搞定。

一个eclipse报错的改法

  如果你的java程序出现了没有主函数这个错误,可能是你没有保存,你可以点击保存试试。
  如果你比较懒,或者已经用熟了那种不用点击可以自己保存支行,可以点击上面的“window”栏,点击“preferences”看到如下界面。点击“run/debug”点击“launching”得到如下界面:

  看到第一个选项的项目“save required…”点击“always”再点击“apply and close”。搞定。

连接数据库:

  首先,我们需要导入一个java关于sql语言的包(这个是jdk里自带的)。

 import java.sql.*;

  然后初始化一个驱动名,同时定义好一个url字符串(这个是用来作为一个连接数据库时的定向功能,相当于给了驱动一个目标)。

     //驱动程序名String driver = "com.mysql.cj.jdbc.Driver";//URL指向要访问的数据库名mydataString url = "jdbc:mysql://127.0.0.1:3306/s_t?characterEcoding=ut" +"f-8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";

  再对上面的url做一个小小的解释。仅仅出于使用的角度考虑的话,首尾两部分是不需要管的,只有中间一部分我们需要了解一下。其中,先看到127.0.0.1:3306。这个东西我第一眼看到的时候感觉十分熟悉,嗯,如果不记得了我可以帮你们翻出来,是在这里。

  可以看到的是这个是数据用到的端口。如果有和我的不一样的,可以根据这个自己改一下。然后我们看到的是s_t,这个东西其实是你想要连接的schema(模式)的名字,而不是上面那个hello(这其实是一个连接)。
  接着我们来看一下后面的连接过程:

     //MySQL配置时的用户名String user = "root";//MySQL配置时的密码String password = "123456";Connection conn = null;try{// 注册 JDBC 驱动Class.forName(driver);// 打开链接System.out.println("连接数据库...");conn = DriverManager.getConnection(url,user,password);conn.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}finally{try{if(conn!=null) conn.close();}catch(SQLException se){se.printStackTrace();}}

  我们可以看到的是它先给了一个用户名和密码,至于这个是什么东西,如果有些人忘记了,可以看看这个。其实就是登录数据库进行操作时的一个帐号而已,关于这个帐号的分配与剥夺将会在第二个部分中讲到。

  下面是命名了一个连接,我们可以通过这个连接来进行操作,而关于这个连接的初始化,我们可以在注册了驱动后对其进行初始化,conn = DriverManager.getConnection(url,user,password);,其中url对应的是我们开始讲过的那个目标导向,是告诉驱动去哪打开这个schema的。在进行了这些操作后,对错误进行抛出就可以执行了。

java操作数据库

对数据的操作

对数据进行检索:

  为什么把查找放在第一个呢?因为,放在第一个的话我们可以直接先试验一下我们的数据库是否是真的连上了,而且即使把其它的功能放在前面,不会查找的话我们也不知道那些操作的结果。
  好的,我们先来看看结果,这是我针对一个学生信息数据库的检索:

  先注册一个statement(这是一个执行的接口)。

     Statement stmt = null;try{// 注册 JDBC 驱动Class.forName(driver);// 打开链接System.out.println("连接数据库...");conn = DriverManager.getConnection(url,user,password);System.out.println(" 实例化Statement对象...");stmt = conn.createStatement();//执行查询String sql;sql = "SELECT sno, sname FROM student";ResultSet rs = stmt.executeQuery(sql);// 展开结果集数据库while(rs.next()){// 通过字段检索String Name = rs.getString("sname");String Url = rs.getString("sno");// 输出数据System.out.print(", 学生姓名: " + Name);System.out.print(", 学生学号: " + Url);System.out.print("\n");}// 完成后关闭rs.close();stmt.close();conn.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}finally{// 关闭资源try{if(stmt!=null) stmt.close();}catch(SQLException se2){}// 什么都不做try{if(conn!=null) conn.close();}catch(SQLException se){se.printStackTrace();}}

  其中,sql中是我们要执行的操作。这里的语义是从我student数据表里读出所有的sno(学号)和对应的snam(姓名)数据。rs是用来接受所收集到的结果。它会与你所查询的结果结构一制,所以我们可以在后面直接输出,当全部都展示完毕时会结束这个循环。

数据删除:

  老规矩,我们先来看看结果,这是我针对上面那个学生信息数据库删除部分信息后的检索:

  可以看到,20182316这个数据已经没有了,而中间那个输出的1则是表示这个操作成功执行了。下面我们来看一看代码:

     try{// 注册 JDBC 驱动Class.forName(driver);// 打开链接System.out.println("连接数据库...");conn = DriverManager.getConnection(url,user,password);// 执行删除System.out.println(" 实例化Statement对象...");stmt = conn.createStatement();String insert="DELETE FROM student WHERE sno='20182316' ";int  result = stmt.executeUpdate(insert);                    //执行INSERT语句,返回插入的记录数System.out.println( result );//执行查询String sql;sql = "SELECT sno, sname FROM student";ResultSet rs = stmt.executeQuery(sql);// 展开结果集数据库while(rs.next()){// 通过字段检索String Name = rs.getString("sname");String Url = rs.getString("sno");// 输出数据System.out.print(", 学生姓名: " + Name);System.out.print(", 学生学号: " + Url);System.out.print("\n");}// 完成后关闭rs.close();stmt.close();conn.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}finally{// 关闭资源try{if(stmt!=null) stmt.close();}catch(SQLException se2){}// 什么都不做try{if(conn!=null) conn.close();}catch(SQLException se){se.printStackTrace();}}

  其中,insert(本来是做过一个录入的实验,后面懒得改了)中是我们要执行的操作。这里执行的说语义是我们从students表中删除一个学号为20182316的学生数据。相信一些有基础的学友已经可以自己去摸索剩下的一些对于数据的操作了。其中,我们有一点要注意的是区分查找与增(删、改)的操作不同。查是stmt.executeQuery(sql),其它的是executeQuery(sql)

因为非羽也是一名初学者,所以可能在实现方面也存在许多不完善的地方,欢迎各位学友斧正。

最新代码:

import java.sql.*;
public class try1{public static void main(String[] args) {//驱动程序名String driver = "com.mysql.cj.jdbc.Driver";//URL指向要访问的数据库名mydataString url = "jdbc:mysql://127.0.0.1:3306/s_t?characterEcoding=ut" +"f-8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";//MySQL配置时的用户名String user = "root";//MySQL配置时的密码String password = "123456";Connection conn = null;Statement stmt = null;try{// 注册 JDBC 驱动Class.forName(driver);// 打开链接System.out.println("连接数据库...");conn = DriverManager.getConnection(url,user,password);// 执行删除System.out.println(" 实例化Statement对象...");stmt = conn.createStatement();String insert="DELETE FROM student WHERE sno='20182316' ";int  result = stmt.executeUpdate(insert);                    //执行INSERT语句,返回插入的记录数System.out.println( result );//执行查询String sql;sql = "SELECT sno, sname FROM student";ResultSet rs = stmt.executeQuery(sql);// 展开结果集数据库while(rs.next()){// 通过字段检索String Name = rs.getString("sname");String Url = rs.getString("sno");// 输出数据System.out.print(", 学生姓名: " + Name);System.out.print(", 学生学号: " + Url);System.out.print("\n");}// 完成后关闭rs.close();stmt.close();conn.close();}catch(SQLException se){// 处理 JDBC 错误se.printStackTrace();}catch(Exception e){// 处理 Class.forName 错误e.printStackTrace();}finally{// 关闭资源try{if(stmt!=null) stmt.close();}catch(SQLException se2){}// 什么都不做try{if(conn!=null) conn.close();}catch(SQLException se){se.printStackTrace();}}System.out.println("Goodbye!");}
}

小白学习java连通、操作mysql数据库小记(更新中)相关推荐

  1. 获取mysql可行方法_Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法...

    <Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法>要点: 本文介绍了Mysql学习Java实现获得MySQL数据库中所有表的记录总数可行方法,希望对您有用.如果有 ...

  2. python mysqldb_python学习-使用MySQLdb操作mysql数据库

    操作环境为python2.7 centos7 一.MySQLdb的安装与配置 MySQLdb是用于Python连接mysql数据库的接口,它实现了Python数据库api规范2.0. 按照以下方式安装 ...

  3. 1899-11-30 php mysql_PHP学习十一--PHP操作MYSQL数据库

    1.PHP访问Mysql数据库的一般步骤 连接MySQL服务器 选择MySQL数据库 请求               执行SQL语句                        请求 MySQL数 ...

  4. jmeter+mysql+set_jmeter学习指南之操作 mysql 数据库

    JMeter 通过 JDBC Connection Configuration 和 JDBC Request 可以连接数据库,并进行增删改查操作,支持各种常见的数据库,本文以最常用的 MySQL 数据 ...

  5. [Java]JDBC操作MySQL数据库

    public class MysqlConnect {//定义MySQL数据库的连接地址public static final String DBURL = "jdbc:mysql://ip ...

  6. java JDBC操作MySQL数据库

    一,首先在MYSQL建立一个数据库,例如Geek99DB: create database Geek99DB; use Geek99DB; 然后建立一个表CustomerTab: create tab ...

  7. Go语言学习笔记—golang操作MySQL数据库

    文章目录 一 准备数据库和表 二 安装配置mysql驱动 三 获得数据库连接 3.1 导入包 3.2 获得连接 3.3 初始化连接 四 插入数据 五 查询数据 5.1 单行查询 5.2 多行查询 六 ...

  8. python mysql工具类_Python工具类(一)—— 操作Mysql数据库

    如何调用直接看__main__函数里如何调用此工具类就阔以啦! # encoding=utf-8 import pymysql # 导入所有Mysql配置常量,请自行指定文件 from conf.se ...

  9. python mysql latin1_python操作Mysql数据库

    python操作Mysql数据库 目前工作中主要使用的还是mysql数据库,这里把常用的函数做下总结. python3选择使用pymysql包进行数据库操作,使用pip3 install PyMySQ ...

  10. python多线程读取数据库数据_python多线程操作MySQL数据库pymysql

    python多线程操作MySQL数据库pymysql 项目中使用多线程操作数据库提示错误:pymysql.err.InterfaceError: (0, "),原因是pymysql的exec ...

最新文章

  1. excel重复上一步快捷键_最全的Excel快捷键合集!
  2. [YTU]_2434 ( C++习题 商品销售)
  3. 【android-tips】如何在view中取得activity对象
  4. HTML5新布局元素布局,HTML5新的布局元素
  5. Qt文件编码转换工具(二) C++判断文件编码
  6. ClientAbortException 异常
  7. caffe linux跑自己数据,caffe+linux平台——跑深度学习的流程
  8. 狼真来了!黑客利用SS7漏洞将网银用户洗劫一空
  9. 开发过程中解决各种跨域问题
  10. 软件工程第一次作业程序开发历程
  11. 计算机多媒体技术的内容有哪些方面,多媒体技术是什么_多媒体技术知识点总结...
  12. FbinstTool最简单制作U盘启动ISO格式(金测)
  13. 渥太华大学电子计算机两年,重磅!2021秋季渥太华大学电子与计算机专业直博录取分享!...
  14. SuperCollider学习笔记(一)- 振荡器(Oscillators)
  15. linux 文件755权限的意思,Linux文件和目录的777、755、644权限解释
  16. windows10 扩容C盘空间
  17. vue设置右边距_那些PPT高手,都是怎样设置软件的
  18. 提高效率的Java代码优化小技巧
  19. 小白学 Python(23):Excel 基础操作(上)
  20. 充电1分钟续航800km?揭秘菲斯科固态电池“神话”

热门文章

  1. OpenGL学习之旅(三)——Bezier曲线理论与OpenGL实现
  2. 建模方法(二)-组合优化问题的定义
  3. maya藤蔓插件_Maya特效制作之植物生长动画制作教程(二)之多条藤蔓动画制作...
  4. 一条来自水圈的鄙视链
  5. 大数据应用的典型案例
  6. python中的value是什么意思_Python self[name]=value是什么意思?
  7. Windows下Aria2教程
  8. 交换机和路由器技术-28-OSPF的NSSA区域
  9. 巅峰之证!首位阿里云ACE认证专家产生
  10. Win10防止Windows安全中心(Windows Defender)乱删文件