本章我们介绍,

如何用java原生代码实现连接MySQL数据库并实现基本的增,删,改,查操作。

为了便于演示,首先我们使用Navicat Premium新建一个user表并添加如下数据:

​​​​​​​

我们需要导入连接MySQL所需要的jar包: jdbc驱动包。

jdbc驱动包有多个版本,请根据自己的项目需要选择适合的版本(点击跳转至官网下载):

jdbc驱动包官网下载

根据自己的电脑对应的系统下载:

以Mac为例,解压下载文件,找到下图中的圈红的jar包:

即为连接MySQL所需的jdbc驱动包,接着在自己的项目中添加此驱动包,

添加完成后,我们来编写一个简单的查询操作:

package com.connect_mysql.example;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class DButil {public static void main(String[] args) {//声明Connection对象Connection con;//驱动程序名String driver = "com.mysql.jdbc.Driver";//URL指向要访问的数据库名--sixibiheye,(自行更改成自己的库名)String url = "jdbc:mysql://localhost:3306/sixibiheye";//MySQL配置时的用户名(自行更改成自己的用户名)String user = "everyone";//MySQL配置时的密码(自行更改成自己的密码)String password = "123456";//遍历查询结果集try {//加载驱动程序Class.forName(driver);//1.getConnection()方法,连接MySQL数据库!!con = DriverManager.getConnection(url,user,password);if(!con.isClosed())System.out.println("Succeeded connecting to the Database!");//2.创建statement类对象,用来执行SQL语句!!Statement statement = con.createStatement();//要执行的SQL语句String sql = "select username,sex from user;";//3.ResultSet类,用来存放获取的结果集!!ResultSet rs = statement.executeQuery(sql);System.out.println("-----------------");System.out.println("执行结果如下所示:");System.out.println("-----------------");System.out.println("姓名" + "\t" + "性别");System.out.println("-----------------");String name = null;String sex = null;while(rs.next()){//获取stuname这列数据name = rs.getString("username");//获取stuid这列数据sex = rs.getString("sex");//输出结果System.out.println(name + "\t" + sex);}rs.close();con.close();} catch(ClassNotFoundException e) {//数据库驱动类异常处理System.out.println("Sorry,can`t find the Driver!");e.printStackTrace();} catch(Exception e) {//数据库连接失败异常处理e.printStackTrace();}// TODO: handle exception}
}

对于上面的查询操作,使用到的是Statement对象的executeQuery(String sql)方法,其返回一个ResultSet对象(结果集),可以通过调用其getString("字段名")方法来获取数据,其next()方法表示指针指向下一行,如果有数据就返回true,此外还有first()指向第一行数据,last()指向最后一行数据等等。

运行之后,会得到如下结果:

接着,我们来实现添加数据的操作:

package com.connect_mysql.example;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class DButil {public static void main(String[] args) {//声明Connection对象Connection con;//驱动程序名String driver = "com.mysql.jdbc.Driver";//URL指向要访问的数据库名--sixibiheye,(自行更改成自己的库名)String url = "jdbc:mysql://localhost:3306/sixibiheye";//MySQL配置时的用户名(自行更改成自己的用户名)String user = "everyone";//MySQL配置时的密码(自行更改成自己的密码)String password = "123456";//遍历查询结果集try {//加载驱动程序Class.forName(driver);//1.getConnection()方法,连接MySQL数据库!!con = DriverManager.getConnection(url,user,password);if(!con.isClosed())System.out.println("Succeeded connecting to the Database!");//2.创建statement类对象,用来执行SQL语句!!Statement statement = con.createStatement();//要执行的SQL语句String sql = "insert into user(id,username,sex) values(5,'HaHa','boy');";//executeUpdate(String sql)的返回值是一个int,指受影响的行数。int number = statement.executeUpdate(sql);System.out.println("插入成功!受影响的行数:" + number);con.close();} catch(ClassNotFoundException e) {//数据库驱动类异常处理System.out.println("Sorry,can`t find the Driver!");e.printStackTrace();} catch(Exception e) {//数据库连接失败异常处理e.printStackTrace();}// TODO: handle exception}}

上述插入操作中,使用了Statement对象的executeUpdate(String sql)方法来执行插入操作。其返回值为一个int型数据,表示的是受影响的行数(即更新计数)。

运行之后,得到如下结果:

在Navicat Premium里我们能看到新增的数据:

对于删除和更新操作,与上面的插入操作基本相同,就不具体演示了。小伙伴们可以自己动手试一试。

最后,附上executeQuery(String sql),executeUpdate(String sql),execute(String sql)三者的区别:

1. executeQuery(String sql):

用于产生单个结果集的语句,典型的便是SELECT语句。这是执行SQL语句使用得最多的方法,主要用来执行SELECT语句。其返回的是一个ResultSet对象(结果集),可以通过调用其getString("字段名")方法来获取数据,调用其next()方法使指针指向下一行(如果有数据就返回true),调用其first()方法指向第一行数据,last()方法指向最后一行数据。

2. executeUpdate(String sql):

用于执行SQL语句中的DDL(数据定义语言)语句,比如INSERT , UPDATE , DETELE , CREATE TABLE , DROP TABLE等等,其返回值为一个int型数据,表示的是受影响的行数(即更新计数),对于CREATE TABLE , DROP TABLE等不影响行的操作,返回值总为0)。

3. execute(String sql):

如果说executeQuery返回的是单个结果集,则execute(String sql)将会产生多个结果集,但其返回值是一个boolean类型,如果执行后有结果集,返回true,否则返回false。可以通过getResultSet()方法来获得第一个结果集。如果要获得第二个结果集,需先调用getMoreResults()方法,再调用getResultSet()方法。如果已知某次执行返回两个更新计数,则应先调用getUpdateCount()方法,再依次调用getMoreResults()方法 , getResultSet()方法。

对于不知道返回结果的语句,情况则更为复杂。因此,在大多的应用中,很少使用execute(String sql)方法。

尽管在实际的开发中,不会使用如此原生的方式来连接数据库,但了解最原始的连接方式,对理解许多框架连接MySQL的方式会很有帮助。

最后喜欢的小伙伴们点个赞鼓励支持一下吧~

Java原生代码连接MySQL数据库相关推荐

  1. eclipes Java代码连接Mysql数据库

    Java代码连接Mysql数据库C 一.插件的下载与加载 1.下载与本地的MySQL对应版本的连接数据库的包,如mysql-connector-java-8.0.17.jar 下载Connector/ ...

  2. c mysql 内存泄露_c代码连接mysql数据库内存泄露的问题

    一直使用C代码连接mysql数据库,今天用valgrind检测,发现存在内存泄露的问题 代码如下 MYSQL*connection; connection=mysql_init(); connecti ...

  3. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

  4. java jdbc 连接mysql数据库,Java 通过JDBC连接Mysql数据库

    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口 ...

  5. java maven项目连接mysql数据库

    实现maven项目连接mysql数据库 在maven项目下新建class文件,编辑该文件,部分具体代码如下: import java.sql.Connection; import java.sql.D ...

  6. java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...

    展开全部 用jdbc 连接mysql数据库就行了,网上搜下一大把. --记得在classpath下加入mysql 的jdbc驱动包. /** * @author :来e68a84e8a2ad32313 ...

  7. php代码连接mysql数据库,php连接mysql数据库代码

    php连接mysql数据库代码 复制代码 代码如下: mysql_connect("localhost", "root","1981427" ...

  8. Java web 服务器连接MySQL数据库代码

    文章目录 前言 一,建立工程 二,导入jar包 三,编写DataBase类实现连接数据库与操作数据库 四,效果图 参考文章 前言 经过前面的环境部署,今天我们终于可以来连接数据库了.参考我之前的文章. ...

  9. [转载] 1.1Java使用JDBC原生方式连接MySql数据库

    参考链接: Java数据库连接JDBC驱动程序 前言:今天有朋友问我原生的java连接数据库,因为框架的使用,如果基础不牢固的人,是很容易遗忘原生的连接方式.今天正好趁此做一下回顾: 这里只考虑原生方 ...

最新文章

  1. POJ 3414 Pots(罐子)
  2. Oracle编程入门经典 第12章 事务处理和并发控制
  3. linux 下升级apache,CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache...
  4. python为什么虚部是j不是i_Python基础02 基本数据类型
  5. 201671010128 2017-10-08《Java程序设计》之Lambda与内部类
  6. js中奇怪的问题 同步ajax,modal遮罩层
  7. jq写的项目如何部署到静态服务器_如何在阿里云服务器上部署一个Web项目
  8. 微软遭30万人实名抗议:非人道的1914万美元,能不能别赚?
  9. 戴尔Any Cloud 助力企业快速实现云转型
  10. java执行Sql脚本
  11. 一些可能有用的功能cocos2dx
  12. 尚学堂浪曦视频学习推荐顺序
  13. Docker attach和Docker exec的区别
  14. 【图像识别】基于计算机视觉实现自动报靶系统(重弹孔)含Matlab源码
  15. 为什么会“道可道非常道,名可名非常名”?
  16. 二---------
  17. Dialogs 对话框
  18. 龙家贰少的MarkDown学习笔记
  19. Oracle sql脚本中注释
  20. Openbravo架构分析

热门文章

  1. [WinForm]dataGridView导出到EXCEL
  2. 关于飞信短信报警的问题
  3. Linux 命令(38)—— fdisk 命令
  4. 【软件工程】第一次阅读作业
  5. 交互式 shell 玩转 Python
  6. 利用sdkman安装kotlin和java环境
  7. 【java】深入了解JAVA可变长度的参数
  8. Spring依赖查找中的常见异常
  9. Google,Guava本地高效缓存
  10. 网件rax40可以刷梅林_抢先一步体验WIFI6—网件RAX40 WIFI6路由器体验记