JAVA JDBC数据库开发详解:从入门到精通

这篇具有很好参考价值的文章主要介绍了JAVA JDBC数据库开发详解:从入门到精通。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:

Java是一种面向对象,安全灵活的编程语言,已经成为了世界上最流行的编程语言之一。Java语言的一个重要应用领域就是数据库开发。通过Java JDBC(Java Database Connectivity) API,开发人员可以使用Java语言来访问并操作各种数据库。

本篇资料将会详细介绍Java JDBC数据库开发的相关知识,从入门到精通,涵盖了JDBC的基本概念、如何连接数据库、如何执行SQL语句以及如何处理数据库事务等方面。此外,还会给出许多实际例子,来演示如何应用JDBC API来实现各种数据库操作。读者可以通过本篇资料来了解和掌握Java JDBC数据库开发的相关技能。

章节列表:

1. JDBC的基本概念

2. 连接不同类型的数据库

3. 执行SQL语句

4. 处理查询结果集

5. 处理事务

6. JDBC的高级特性

第一章:JDBC的基本概念

Java Database Connectivity(JDBC)是一种用于连接各种关系型数据库的API,它允许Java应用程序通过标准的Java编程语言方式访问数据库,包括连接数据库、执行SQL语句、处理查询结果等操作。

JDBC的三个核心组件:

1. Driver:用于连接数据库的驱动程序。

2. Connection:与数据库的连接对象。

3. Statement:执行SQL语句的对象。

第二章:连接不同类型的数据库

在JDBC中,不同的数据库需要使用特定数据库的驱动程序。常见的数据库有MySQL、Oracle、SQL Server等。

连接MySQL数据库示例:

import java.sql.*;
public class ConnectMySQL {
   static final String USER = "username";
   static final String PASS = "password";
   static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected database successfully...");
         stmt = conn.createStatement();
         String sql = "SELECT id, first, last, age FROM Employees";
         ResultSet rs = stmt.executeQuery(sql);
         while(rs.next()){
            System.out.print("ID: " + rs.getInt("id"));
            System.out.print(", Age: " + rs.getInt("age"));
            System.out.print(", First: " + rs.getString("first"));
            System.out.println(", Last: " + rs.getString("last"));
         }
         rs.close();
      }catch(SQLException se){
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null)
               conn.close();
         }catch(SQLException se){
         }
         try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}



连接Oracle数据库示例:

import java.sql.*;
public class ConnectOracle {
   static final String USER = "username";
   static final String PASS = "password";
   static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:xe";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName("oracle.jdbc.driver.OracleDriver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected database successfully...");
         stmt = conn.createStatement();
         String sql = "SELECT id, first, last, age FROM Employees";
         ResultSet rs = stmt.executeQuery(sql);
         while(rs.next()){
            System.out. print("ID: " + rs.getInt("id"));
            System.out.print(", Age: " + rs.getInt("age"));
            System.out.print(", First: " + rs.getString("first"));
            System.out.println(", Last: " + rs.getString("last"));
         }
         rs.close();
      }catch(SQLException se){
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null)
               conn.close();
         }catch(SQLException se){
         }
         try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}



第三章:执行SQL语句

在JDBC中,使用Statement和PreparedStatement对象分别执行静态SQL和动态SQL语句。

创建Statement对象执行静态SQL示例:
 

import java.sql.*;
public class ExecuteStatement {
   static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";
   static final String USER = "username";
   static final String PASS = "password";
   static final String INSERT_SQL = "INSERT INTO Employees (id, first, last, age) VALUES (100, 'John', 'Doe', 25)";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected database successfully...");
         stmt = conn.createStatement();
         System.out.println("Executing SQL query...");
         stmt.executeUpdate(INSERT_SQL);
         System.out.println("SQL query executed successfully...");
      }catch(SQLException se){
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null)
               conn.close();
         }catch(SQLException se){
         }
         try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}



创建PreparedStatement对象执行动态SQL示例:

import java.sql.*;
public class ExecutePreparedStatement {
   static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";
   static final String USER = "username";
   static final String PASS = "password";
   static final String SQL = "INSERT INTO Employees (id, first, last, age) VALUES (?, ?, ?, ?)";

   public static void main(String[] args) {
      Connection conn = null;
      PreparedStatement pstmt = null;
      try{
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected database successfully...");
         pstmt = conn.prepareStatement(SQL);
         pstmt.setInt(1, 101);
         pstmt.setString(2, "Tom");
         pstmt.setString(3, "Smith");
         pstmt.setInt(4, 30);
         System.out.println("Executing SQL query...");
         pstmt.executeUpdate();
         System.out.println("SQL query executed successfully...");
      }catch(SQLException se){
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(pstmt!=null)
               conn.close();
         }catch(SQLException se){
         }
         try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}



第四章:处理查询结果集

在JDBC中,通过ResultSet对象来处理查询结果集,包括遍历查询结果、获取指定列的值等操作。

处理查询结果集示例:

import java.sql.*;
public class ProcessResultSet {
   static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";
   static final String USER = "username";
   static final String PASS = "password";
   static final String SQL = "SELECT id, first, last, age FROM Employees";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected database successfully...");
         stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery(SQL);
         while(rs.next()){
            int id  = rs.getInt("id");
            int age = rs.getInt("age");
            String first = rs.getString("first");
            String last = rs.getString("last");
            System.out.print("ID: " + id);
            System.out.print(", Age: " + age);
            System.out.print(", First: " + first);
            System.out.println(", Last: " + last);
         }
         rs.close();
      }catch(SQLException se){
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null)
               conn.close();
         }catch(SQLException se){
         }
         try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}



第五章:处理事务

在JDBC中,事务处理对于保证数据的一致性非常重要。通过对Connection对象开启事务、设置保存点、提交或回滚,可以实现对数据库中数据的增删改操作的原子性和持久性。

处理事务示例:
 

import java.sql.*;
public class ProcessTransaction {
   static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";
   static final String USER = "username";
   static final String PASS = "password";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected datab ase successfully...");
         conn.setAutoCommit(false);
         stmt = conn.createStatement();
         String sql1 = "INSERT INTO Employees (id, first, last, age) VALUES (200, 'Jack', 'Jones', 25)";
         stmt.executeUpdate(sql1);
         String sql2 = "INSERT INTO Employees (id, first, last, age) VALUES (201, 'Mary', 'Smith', 32)";
         stmt.executeUpdate(sql2);
         Savepoint savepoint = conn.setSavepoint("Savepoint1");
         String sql3 = "INSERT INTO Employees (id, first, last, age) VALUES (202, 'Tom', 'Brown', 28)";
         stmt.executeUpdate(sql3);
         String sql4 = "INSERT INTO Employees (id, first, last, age) VALUES (203, 'Linda', 'White', 41)";
         stmt.executeUpdate(sql4);
         String sql5 = "INSERT INTO Employees (id, first, last, age) VALUES (204, 'Mike', 'Green', 38)";
         stmt.executeUpdate(sql5);
         conn.commit();
         System.out.println("Transaction committed successfully...");
      }catch(SQLException se){
         try{
            if(conn!=null)
               conn.rollback();
         }catch(SQLException se2){
            se2.printStackTrace();
         }
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null)
               conn.close();
         }catch(SQLException se){
         }
         try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}



第六章:JDBC的高级特性

除了基本的JDBC操作,还有很多高级特性可以进一步优化数据库开发,包括批处理、元数据查询、数据库连接池等。

JDBC批处理示例:

 

import java.sql.*;
public class ExecuteBatch {
   static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";
   static final String USER = "username";
   static final String PASS = "password";

   public static void main(String[] args) {
      Connection conn = null;
      Statement stmt = null;
      try{
         Class.forName("com.mysql.jdbc.Driver");
         System.out.println("Connecting to database...");
         conn = DriverManager.getConnection(DB_URL,USER,PASS);
         System.out.println("Connected database successfully...");
         stmt = conn.createStatement();
         conn.setAutoCommit(false);
         stmt.addBatch("INSERT INTO Employees (id, first, last, age) VALUES (300, 'John', 'Doe', 25)");
         stmt.addBatch("INSERT INTO Employees (id, first, last, age) VALUES (301, 'Mary', 'Smith', 32)");
         stmt.addBatch("INSERT INTO Employees (id, first, last, age) VALUES (302, 'Tom', 'Brown', 28)");
         stmt.addBatch("INSERT INTO Employees (id, first, last, age) VALUES (303, 'Linda', 'White', 41)");
         stmt.addBatch("INSERT INTO Employees (id, first, last, age) VALUES (304, 'Mike', 'Green', 38)");
         int[] count = stmt.executeBatch();
         conn.commit();
         System.out.println("Batch executed successfully...");
         for(int i=0;i<count.length;i++){
            System.out.println(count[i] + " row(s) affected.");
         }
      }catch(SQLException se){
         try{
            if(conn!=null)
               conn.rollback();
         }catch(SQLException se2){
            se2.printStackTrace();
         }
         se.printStackTrace();
      }catch(Exception e){
         e.printStackTrace();
      }finally{
         try{
            if(stmt!=null)
               conn.close();
         }catch(SQLException se){
         }try{
            if(conn!=null)
               conn.close();
         }catch(SQLException se){
            se.printStackTrace();
         }
      }
      System.out.println("Goodbye!");
   }
}

JDBC元数据查询可以通过Connection对象的getMetaData方法来获取数据库的元数据信息,包括表结构、列信息、索引信息等。通过元数据查询,可以方便地了解数据库的基本信息,从而更好地进行数据库开发。


元数据查询示例:
 

import java.sql.*;
public class MetadataQuery {
static final String DB_URL = "jdbc:mysql://localhost:3306/Employee";
static final String USER = "username";
static final String PASS = "password";

public static void main(String[] args) {
Connection conn = null;
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Connected database successfully...");
DatabaseMetaData dbmd=conn.getMetaData();
System.out.println("Driver Name: "+dbmd.getDriverName());
System.out.println("Driver Version: "+dbmd.getDriverVersion());
System.out.println("Database Name: "+dbmd.getDatabaseProductName());
System.out.println("Database Version: "+dbmd.getDatabaseProductVersion());
System.out.println("Tables:");
ResultSet rs=dbmd.getTables(null,null,null,new String[]{"TABLE"});
while(rs.next()){
System.out.println(rs.getString("TABLE_NAME"));
}
conn.close();
}catch(SQLException se){
se.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
}
}
System.out.println("Goodbye!");
}
}


数据库连接池是一种重要的数据库优化方案,通过建立连接池,可以避免频繁地创建和销毁数据库连接,从而提高系统性能并减少数据库开销。JDBC连接池可以通过一些现成的开源项目进行实现,包括Apache Commons DBCP和C3P0等。

本篇资料到此结束,希望能够通过学习JDBC,掌握Java对关系型数据库的访问和操作,提高系统性能和稳定性。文章来源地址https://www.toymoban.com/news/detail-433826.html

到了这里,关于JAVA JDBC数据库开发详解:从入门到精通的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GaussDB 开发篇+Java调用JDBC访问openGauss数据库

    ★ JDBC获取 ★ 环境信息 ★ Java代码 ※ 如果您觉得文章写的还不错, 别忘了在文末给作者点个赞哦 ~

    2024年02月13日
    浏览(45)
  • 【Java 进阶篇】JDBC 数据库连接池 C3P0 详解

    数据库连接池是数据库编程中常用的一种技术,它可以有效地管理数据库连接,提高数据库访问的性能和效率。在 Java 编程中,有多种数据库连接池可供选择,其中之一就是 C3P0。本文将详细介绍 C3P0 数据库连接池的使用,包括原理、配置、常见问题和示例代码,旨在帮助基

    2024年02月04日
    浏览(70)
  • Java从入门到精通24==》数据库、SQL基本语句、DDL语句

    2023.8.27 数据库是一个电子化储存数据的系统,它能够以结构化形式组织、存储和管理数据,使得数据的访问、操作和管理变得更为高效、可靠和安全 数据库通常包括数据、数据结构、查询语言、数据存储和检索引擎等多个组成部分,可分为关系型数据库、非关系型数据库等

    2024年02月11日
    浏览(45)
  • JDBC 技术 | Java连接MySQL数据库(四万字零基础保姆级超全详解)

    管他啥是啥,看就完了!如果觉得博主写的不错,可以点赞关注支持一下博主哦!有什么地方存在不足或者错误的,烦请各位大佬在评论区指正。万分感谢!! 本文结合了韩顺平零基础学java,黑马程序员零基础学 JavaWeb,等多个视频的相关知识内容整理而来。花费了很多很多

    2024年02月05日
    浏览(65)
  • Microsoft SQL Server 2019 下载、安装及Java JDBC配置连接数据库(多图详解 超详细)

    一、下载 下载链接Microsoft SQL Server 二、安装 1.找到刚刚下载的文件,双击打开后,选择基本并接受 2.选择接受 3.选择安装位置,并点击安装,然后等待下载安装完成 4.正在安装 -5.遇到了一个问题,重启一下(未遇到该问题的可忽略此步) 6.安装成功,点击安装SSMS 7.点击下载

    2024年02月04日
    浏览(105)
  • JSP在线小说系统用eclipse定制开发mysql数据库BS模式java编程jdbc

    一、源码特点      JSP 在线小说系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 JSP在线小说系统用eclipse定制开发mysql数据库

    2024年02月12日
    浏览(44)
  • JSP网上手机商城系统 用eclipse定制开发mysql数据库BS模式java编程jdbc

    一、源码特点      JSP 网上手机商城系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 JSP网上手机商城系统 用eclipse定

    2024年02月13日
    浏览(43)
  • JSP网上订餐管理系统用eclipse定制开发mysql数据库BS模式java编程jdbc

    一、源码特点      JSP 网上订餐管理系统是一套完善的web设计系统,对理解JSP java SERLVET mvc编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发,数据库为Mysql5.0,使用java语言开发。 JSP网上订餐管理系统用eclipse定

    2024年02月12日
    浏览(41)
  • JDBC入门数据库连接

    JDBC(Java Database Connectivity)是Java程序与数据库进行交互的一种标准接口,它提供了一种简单的方式来连接和操作数据库。在使用JDBC之前,需要先了解以下几个概念: JDBC Driver :JDBC驱动程序是一个Java类,用于将Java应用程序与特定数据库管理系统(DBMS)连接。JDBC驱动程序分

    2023年04月25日
    浏览(46)
  • JDBC详解(六):数据库事务(超详解)

    本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。 事务处理(事务操作): 保证所

    2024年02月04日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包