JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作。JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver、Connection、Statement、ResultSet,这些接口定义了使用SQL访问数据库的一般架构。  

1、JDBC相关类和API

JDBC是一个Java应用程序接口,作用是封装了对数据库的各种操作。JDBC由类和接口组成,使用Java开发数据库应用都需要4个主要的接口:Driver、Connection、Statement、ResultSet,这些接口定义了使用SQL访问数据库的一般架构。

  • Driver接口

Driver接口是所有JDBC程序必须实现的接口,该接口专门提供给数据库厂商使用。编写JDBC程序时,必须制定数据库驱动程序或类库加载到项目classpath中。

  • DriverManager类

DriverManager用于加载JDBC驱动并创建与数据库的连接。其中定义了2个重要的静态方法:

  1. DriverManager.registerDriver(Driver driver) // 用于向DeriverManager注册给定的JDBC驱动程序
  2. DriverManager.getConnection(String url, String user, String pwd) // 建立与数据库的连接,返回表示连接的Connection对象
  • Connection接口

Connection代表与数据库的连接,其中定义了一系列的方法:

  1. Connection.getMetaData(); // 返回表示数据库元数据的DatabaseMetaData对象
  2. Connection.createStatement(); // 创建一个Statement对象
  3. Connection.prepareStatement(String sql); // 创建一个PreparedStatement对象
  4. Connection.prepareCall(String sql); // 创建一个CallableStatement对象来调用数据库存储过程
  • Statement接口

Statement接口用于向数据库发送SQL语句。

  1. Statement.execute(String sql); // 执行各种SQL语句,返回一个boolean类型值,true表示执行的SQL语句具备查询结果,可通过Statement.getResultSet()方法获取
  2. Statement.executeUpdate(String sql); // 执行SQL中的insert/update/delete语句,返回一个int值,表示受影响的记录的数目
  3. Statement.executeQuery(String sql); // 执行SQL中的select语句,返回一个表示查询结果的ResultSet对象
  • ResultSet接口
  1. ResultSet.next(); // 将游标由当前位置移动到下一行
  2. ResultSet.getString(String columnName); // 获取指定字段的String类型值
  3. ResultSet.getString(int columnIndex); // 获取指定索引的String类型值
  4. ResuleSet.previous(); // 将游标由当前位置移动到上一行

2、程序示例

数据库IP 192.168.1.150,数据库名称为test,数据表名称persion,表结构为:

 表中原有数据

JDBC连接MySQL程序示例

  1. package server;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7.  
  8. public class DemoJDBC {
  9. public static void main(String[] args) throws Exception {
  10. // 加载驱动类
  11. Class.forName("com.mysql.jdbc.Driver");
  12.  
  13. // 通过DriverManager获取数据库连接
  14. String url = "jdbc:mysql://192.168.1.150/test";
  15. String user = "teamtalk";
  16. String password = "123456";
  17. Connection connection = (Connection) DriverManager.getConnection(
  18. url, user, password);
  19.  
  20. // 通过Connection对象获取Statement对象、Statement执行SQL语句
  21. Statement statement = (Statement) connection.createStatement();
  22. ResultSet resultSet = statement.executeQuery("select * from persion");
  23.  
  24. // 操作ResultSet结果集
  25. while (resultSet.next()) {
  26. // 第一种获取字段方式
  27. System.out.println(resultSet.getString(1) + " " +
  28. resultSet.getString(2) + " " + resultSet.getString(3));
  29. System.out.print("---- ");
  30. // 第二种获取字段方式
  31. System.out.println(resultSet.getString("id") + " " +
  32. resultSet.getString("name") + " " + resultSet.getString("age"));
  33. }
  34.  
  35. int ret = statement.executeUpdate("insert persion (name, age) value ('bobo', 24)");
  36. if (ret > 0) {
  37. System.out.println(" insert ok");
  38. resultSet = statement.executeQuery("select * from persion");
  39.  
  40. while (resultSet.next()) {
  41. System.out.println(resultSet.getString(1) + " " +
  42. resultSet.getString(2) + " " + resultSet.getString(3));
  43. }
  44. }
  45.  
  46. // 关闭数据库连接
  47. resultSet.close();
  48. statement.close();
  49. connection.close();
  50. }
  51. }

程序运行结果为:

 数据表中数据

JDBC使用PreparedStatement进行数据插入操作程序示例

  1. package server;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7.  
  8. import com.mysql.jdbc.PreparedStatement;
  9.  
  10. public class DemoJDBC {
  11. public static void main(String[] args) throws Exception {
  12. // 加载驱动类
  13. Class.forName("com.mysql.jdbc.Driver");
  14.  
  15. // 通过DriverManager获取数据库连接
  16. String url = "jdbc:mysql://192.168.1.150/test";
  17. String user = "teamtalk";
  18. String password = "123456";
  19. Connection connection = (Connection) DriverManager.getConnection(
  20. url, user, password);
  21.  
  22. PreparedStatement statement = (PreparedStatement) connection.prepareStatement(
  23. "insert persion (name, age) value (?, ?)");
  24. statement.setString(1, "hdu");
  25. statement.setInt(2, 21);
  26. statement.executeUpdate();
  27.  
  28. ResultSet resultSet = statement.executeQuery("select * from persion");
  29. // 操作ResultSet结果集
  30. while (resultSet.next()) {
  31. // 第一种获取字段方式
  32. System.out.println(resultSet.getString(1) + " " +
  33. resultSet.getString(2) + " " + resultSet.getString(3));
  34. }
  35.  
  36. // 关闭数据库连接
  37. resultSet.close();
  38. statement.close();
  39. connection.close();
  40. }
  41. }

程序输出为:

 数据库中数据为:

3、小结

当程序远程访问mysql时,不能使用root账号和密码登录,这样是为了mysql的安全考虑,可以先新建一个mysql账号用来测试。

如果远程MySQL主机是Centos7的话,需要展暂时关闭防火墙,使用命令 systemctl stop firewalld.service。

JDBC是一套操作数据库的接口,相当于数据库的抽象层,我们可以通过它来操作常用的数据库,进行SQL操作。当我们写程序时,对于一个表(user),可以新建其对应的类(User),其提供各种get/set方法;然后新建一个数据库操作工具类(JDBCUtils),其提供与数据库建立连接、关闭连接方法;最后新建一个对表的操作类(UserDao),其封装了对表User的添加、删除、查询和更新等操作。

Java JDBC基础学习小结的更多相关文章

  1. Java【基础学习】之暴力求素数【用数组返回】

    Java[基础学习]之暴力求素数[用数组返回] */ import java.util.*; public class Main{ public static void main(String[] a ...

  2. Java JDBC 数据库链接小结随笔

    Java JDBC 数据库链接小结随笔 一.链接数据库的步骤 二.关于Statement  和  PrepareStatement 两者区别 用法 三.关于 ResultSet 的一些小结 四.自定义 ...

  3. Java之基础学习(数据类型、运算符、分支语句和循环语句)

    在工作用得比较多的是shell和python编程,对于java以前也学习过,使用很少,这次借朋友推荐的java视频教程来温习下. 也是因为现在很多开源测试工具使用java编写的,学习一下更有助于测试工 ...

  4. JDBC基础学习(六)—数据库连接池

    一.数据库连接池介绍 1.数据库连接池的缘由      对于一个简单的数据库应用,由于对于数据库的访问不是很频繁.这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什 ...

  5. java反射机制学习小结

    之前一直对java的反射机制理解得很模糊,今天因为学习spring,所以花了些时间总算把它理顺了,记录一下 另外,推荐读读这篇文章,写的挺好的http://blog.csdn.net/woshixuy ...

  6. Java入门基础学习,成为一个Java程序员的必备知识

    引言 众所周知,Java是一种面向对象的编程语言.您可以在Windows操作系统上编写Java源代码,而在Linux操作系统上运行编译后的字节码,而无需修改源代码. 数据类型 Java 有 2 种数据 ...

  7. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  8. mysql的jdbc入门学习小结

    转自:专注JavaWeb开发 http://www.javaweb1024.com/data/MySQL/2015/04/25/618.html 一.jdbc基本概念jdbc : Java Datab ...

  9. JDBC基础学习(五)—批处理插入数据

    一.批处理介绍      当需要成批插入或者更新记录时.可以采用Java的批量更新机制,这一机制允许多条语句一次性提交给数据库批量处理.通常情况下比单独提交处理更有效率. JDBC的批量处理语句包括下 ...

随机推荐

  1. WCF入门教程(三)定义服务协定--属性标签

    WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...

  2. [WCF编程]6.绑定行为

    一.绑定行为概述 为了支持服务端的其它本地特性,WCF定义了行为的概念.行为就是服务的本地特性,不会影响服务的通信模式.客户端并不知道服务端行为,所以行为不会出现在服务的绑定和发布的元数据中.说下WC ...

  3. Unity3D 5.x 交互功能 - 光线投射、碰撞设置

    1,光线投射碰撞:第一人称视线在预置范围内(如3米)和看到的物体发生碰撞 ① 检测光线投射碰撞的脚本添加在第一人称FPSController上 #pragma strict private var c ...

  4. Struts2运行流程

    解释:首先浏览器发送一个请求.给/StrutsPrepareAndExecuteFilter调用doFilter()方法.创建/StrutsActionProxy执行execute()方法.有一个引用 ...

  5. Linux下查看版本号,查看存在的普通用户

    1. 查看版本号 uname -a ## 查看所有信息 uname --help ## 查看关于uname命令的帮助 2. 查看存在的普通用户 vim /etc/passwd ## 查看passwd文 ...

  6. struts通过action返回json

    其实struts2通过action返回json挺简单的,但是就是老要忘,所以索性写在博客上.好的,开始. 首先是引入必须的jar包: struts2-json-plugin-2.3.24.jar 然后 ...

  7. Lind.DDD.API核心技术分享

    回到目录 关于Lind.DDD框架里API框架的技术点说明 讲解:张占岭 花名:仓储大叔 主要框架:Lind.DDD 目录 关于Lind.DDD.Authorization 关于授权的原理 关于Api ...

  8. 推荐15款最佳的 jQuery 分步引导插件

    当用户浏览到一个网站,它可能从不知道如何浏览,如何操作网站或 Web 应用程序的内容和流程.在这篇文章中,我们编制了一些最好的 jQuery 引导插件列表.你会发现这些插件对于提高你的网站的整体用户体 ...

  9. 自适应备忘录 demo

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  10. SharePoint暂时禁用事件触发

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsof ...