JDBC 教程
因此,在当今世界,我们主要处理网站和数据库,它们似乎最重要,但如果我们仔细观察,数据才是最重要的。如果我们仔细观察,所有开发人员都在围绕 Web 和移动技术开展工作,但保持不变的还是数据。
因此,迫切需要弄清楚如何处理这个概念发挥作用的数据。
让我们大致了解为什么我们需要这个术语,下面提供的图像可以更好地解释这个术语。
为什么我们需要学习高级Java?
由于我们精通Core Java 的所有概念,现在是时候构建项目以构建最终产品的应用程序了。因此,如果我们只知道核心Java,我们只能构建可以在存储其组件的机器上运行的应用程序(简单地说,可以说所有代码都在哪里编写)。这些类型的应用程序称为独立应用程序。
Note: Standalone applications being one of two types of applications in the programming world only holds for 5% of the applications in the real world.
因此,如果我们只构建独立的应用程序,那么范围就会非常狭窄,导致开发和可扩展性的范围很小,这就催生了Java的发展,而Java又催生了3 个组件,主要是JSP 、 Servlets和JDBC ,以便使应用程序在多台机器上运行。随着这 3 个组件的发展,它消除了只运行一台机器的限制,因为它在实际应用中对用户来说是不切实际的,而是强制用户安装然后使用它们。现在,这些类型的应用程序被称为 Web 应用程序,它们是向最终用户提供服务而无需安装它们的应用程序。这些应用程序被称为 Web 应用程序,它们不是独立的应用程序。
现在您一定想知道什么是 JSP 和 Servlet,以及 JDBC 如何与它们相互关联。暂且,只是只注重JDBC才能开始使用它到底是什么以及如何使用它的参考[R ING的形象描述如下如下:
Note: Conclusion drawn from Image is as follows:
- JSP stands for Java Server Pages where these pages are considered as View Components as Presentation logic.
- Servlet is meant for internal processing going on such as reading, fetching values from the database, comparison, etc in the backend as Processing Logic in our process servlet. Servlets do also contain java classes for this background processing for processing logic.
- JDBC is meant for Connectivity of Java Application in servlets as discussed to our Database.
什么是JDBC?
让我们尝试从头开始讨论直到现在在Java领域中我们只是编写代码(编程)并与数据库交互。您有没有想过如何在内部将我们的程序链接到数据库,从而赋予我们从程序中创建项目和应用程序的巨大能力。是的,在这种机制的帮助下是可能的。让我们在一个真实世界的场景中讨论,稍后我们将使用技术术语进行映射,以通过图形表示获得对相同内容的绝对技术理解。
真实世界的例子
考虑两个地方 A 和 B。现在居住在 A 上的人不知道居住在 B 处的人的语言,反之亦然,我们将用技术术语映射来讨论 JDBC 内部的主要组件。
用技术术语映射相同的内容以说明上面的真实插图。此处 A 处称为Java应用程序,因此 B 处称为数据库。现在,上面讨论的负责将Java应用程序调用转换为数据库调用并将数据库调用转换为Java应用程序调用的转换器只不过是一个“驱动程序软件”。应用程序之间的道路是“连接”,最后车辆是我们的“声明对象”。现在上面的'requirement'就是我们的SQL查询,数据库引擎处理SQL语句后生成的'小块'除了'ResultSet'什么也没有传入。现在, Java应用程序与数据库进行通信的这种技术是“Java数据库连接”。到目前为止,我们已经完成了对 JDBC 的清晰概述,你会惊讶于我们已经涵盖了它,让我们深入了解组件的工作,这些组件将在 JDBC 的环境设置中进行更深入的描述.
现在我们将深入探讨 JDBC 组件,如上所述,它是一种用于将Java应用程序与数据库连接的技术。它是一个由许多类和接口组成的 API,通过这些类和接口,我们可以将Java应用程序连接到数据库,如上图所示。它即有主要有两个包,如下所示:Java的.SQL包和javax.sql包。
Note: For reference above SQL is taken as database to illustrate packages names.
所以这里是我们将如何涵盖 JDBC 问题,以便从技术上了解 整个过程循环。
- 什么是JDBC
- JDBC的需求
- JDBC 中的数据类型
- JDBC 架构
- JDBC 环境设置
- 连接 JDBC 的步骤 (DONE)
- 作为实现的 JDBC 示例 (DONE)
4. JDBC 架构
因此,从上面的图像中,我们将讨论遇到的主要 5 个术语如下:
- 驱动软件
- 语句对象
- 结果集
- 连接对象
- SQL查询
5. JDBC 环境设置
现在让我们来讨论一下 JDBC 中的各种类型的驱动程序。所以基本上有下面列出的4种类型的标准驱动程序:
- Type-1 驱动程序或 JDBC-ODBC 桥接驱动程序(Bridge Driver)
- Type-2 驱动程序或 Native-API 驱动程序(Native API)
- Type-3 驱动程序或网络协议驱动程序(网络协议)
- Type-4 驱动程序或瘦驱动程序(本机协议)
现在,您一定想知道他们是不是要确定要使用哪些驱动程序。解决这个问题的方法很简单,因为我们需要根据我们正在与之交互的数据库使用驱动程序。
Note: Drivers to be used are directly propionate to which kind of database with which we are dealing.
驱动在下表中提到,对应数据库如下:Database Driver name MySQL com.mysql.jdbc.Driver
现在您一定想知道从哪里进口这些列出的干燥剂。因此,为了导入驱动程序,您需要从 Web 下载 JAR 文件。考虑到最常用的数据库即 MySQL,您需要下载一个名为“ mysql.connector ”的 JAR 文件,其他数据库依此类推。
Note: It is not an essential step as different IDE’s possesses different traits. In some IDE these connectors are inbuilt such as NetBeans while in Eclipse you need to import this JAR file as discussed above by simply downloading corresponding JAR file from the internet and load in the project.
If you do not know how to import JAR files to libraries in java IDE, first go through this step.
6. 连接JDBC的步骤?
基本上有七个步骤可以让您的Java应用程序连接以处理数据库。这里的数据库可以是结构化的或非结构化的,我们必须相应地处理相同的问题,这将在顺序步骤执行结束时清楚。在一般情况下,就我们的Java应用程序而言,我们主要处理 MySQL 或 Oracle 数据库。在这里,我们将处理我们的Java应用程序的 MySQL 数据库,其中处理我们只需要按顺序执行下面列出的步骤来连接 JDBC,如下所示:
- 导入对应数据库所需的包。
- 加载并注册 JDBC 驱动程序。
- 首先加载然后注册相同的
- 建立连接
- 创建声明
- 执行查询
- 处理结果
- 关闭连接
让我们通过从现实世界中挑选案例来讨论上述步骤,以清楚地理解我们的概念。考虑以下移动网络的说明:
现实生活 JDBC 的实现在移动网络中最常见,如下图所示:
- 考虑到您想与远方的人交谈。为此,需要一种称为手机/电信的设备,这标志着我们的第 1 步。
- 现在用户需要一个网络和一张 SIM 卡,这相当于第 2 步的加载和注册过程。
- 现在有了一张可以工作的 SIM 卡,在我们尝试建立通勤连接时,需要体力劳动来拨打号码并按下表示第 3 步的呼叫按钮。
- 我们需要传递的任何信息都相当于创建一个声明。
- 现在一旦连接,我们需要按照我们的想法说出消息,这相当于执行查询。
- 现在将收到一个响应,这是我们的目标,在 JDBC 的情况下,在技术上表示处理结果的第 6 步。
- 最后,我们需要按下设备上的按钮来关闭通信,同样,在技术方面关闭连接是一个很好的做法,这里是JDBC。
7. 实施:
- 假设我们要处理的数据库是 MySQL。所以首先我们需要导入包,对于 SQL 数据库,它就是 ' Java.sql.* '。
- 现在根据IDE(我们需要在IDE的项目中加载其对应的JAR文件,其中JAR应该手动插入IDE中,以'eclispe IDE'作为IDE参考,以便在下面的示例中说明相同.
- 到目前为止,我们已经完成了将 JAR 导入到我们的项目中。现在为了加载驱动程序,我们将使用forName() 方法 通过编写属于类“类”的“ com.mysql.driver_name ”
句法:
class com.mysql.jdbc.Driver ;
- 现在为了建立连接,我们必须实例化一个名为“Connection”的接口
- 现在语句分为三种类型:
- 正常语句:
- 准备好的声明:
- 可调用语句:存储过程
- 创建语句后,现在我们将根据来自数据库的感知响应在我们的数据库中执行查询。假设如果我们想从数据库中获取数据,那么这里的响应是表结构,或者如果我们只是插入值,那么如果行数有效,则响应。
- 最后,无论我们得到的是表格还是简单的行,现在我们只需要处理结果。
- 此外,建议通过关闭接口和语句对象的对象来释放和释放内存资源。
插图:设置 JDBC
Java
// Java Program to Illustrate Setting Up of JDBC
// Importing SQL database
import java.sql.*;
// Main class to illustrate demo of JDBC
class GFG {
// Main driver method
public static void main(String[] args) throws Exception
{
// Loading and registering drivers
// Optional from JDBC version 4.0
Class.forName("oracle.jdbc.OracleDriver");
// Step 2:Establishing a connection
Connection con = DriverManager(
"jdbc:oracle:thin:@localhost:1521:XE",
"username", "password");
// Step 3: Creating statement
Statement st = con.createStatement();
// Step 4: Executing the query and storing the
// result
ResultSet rs = st.executeQuery(
"select * from Students where Marks >= 70");
// Step 5: Processing the results
while (rs.next()) {
System.out.println(rs.getString("studens"));
System.out.println(rs.getInt("marks"));
}
// Step 6: Closing the connections
// using close() method to release memory resources
con.close();
// Display message for successful execution of program
System.out.println("Steps in Setting Up of JDBC");
}
}
Java
// Java Program to Illustrate Working Of JDBC
// with Above Query in Database
// Importing required classes
import java.io.*;
import java.util.*;
// Main class
// JDBC demo class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Declaring and initializing arguments that
// needed to be passed later in getConnection()
String url = "jdbc:mysql://localhost/test";
String uname = "root";
String pass = "";
// Query from the database taken
// Custom query taken to illustrate
String query
= "select username from Student where id=7";
// Loading and registering drivers
Class.forName("com.mysqljdbc.Driver");
// Creating an connection object by
// getConnection() ethod which is static method and
// returns the instance of Connection class
// This method takes 3 parameters as defined above
Connection con
= DriverManager.getConnection(url, uname, pass);
Statement st = con.createStatement();
// It returns a tabular structure so we need
// ResultSet as it stores chunk of data into
// structures
ResultSet rs = st.executeQuery(query);
// Now we are having our data in object of ResultSet
// which is no more tabular
// Note:
// Fetching the above data by storing it as a String
// Here pointer is lagging with data for which we
// use next() method to
// take it to next record
rs.next();
// Here we are fetching username column data
String name = rs.getString("username");
// Lastly print the data
System.out.println(name);
// It is good practice to clsoe the connection
// using close() method
// Closing the statement first
st.close();
// Now close the connection also
con.close();
}
}
输出:
Steps in Setting Up of JDBC
现在让我们继续讨论在成功设置数据库后它与真实数据库的交互是如何在内部进行管理的。在这里,我们将不得不创建两个类,一个是我们的连接类,另一个是我们将在应用程序中实现的类。 Java类使用连接器对象。我们已经完成了上图中的连接类,所以现在让我们通过一个示例来最终讨论应用程序类。考虑到数据库'MySQL在这里解释和编码出来是一样的。
实现:在我们的MySQL数据库中查询如下:
select * from Student;
insert into Students values(7, geeksforGeeks);
select username from Student where userid = 7;
例子:
Java
// Java Program to Illustrate Working Of JDBC
// with Above Query in Database
// Importing required classes
import java.io.*;
import java.util.*;
// Main class
// JDBC demo class
class GFG {
// Main driver method
public static void main(String[] args)
{
// Declaring and initializing arguments that
// needed to be passed later in getConnection()
String url = "jdbc:mysql://localhost/test";
String uname = "root";
String pass = "";
// Query from the database taken
// Custom query taken to illustrate
String query
= "select username from Student where id=7";
// Loading and registering drivers
Class.forName("com.mysqljdbc.Driver");
// Creating an connection object by
// getConnection() ethod which is static method and
// returns the instance of Connection class
// This method takes 3 parameters as defined above
Connection con
= DriverManager.getConnection(url, uname, pass);
Statement st = con.createStatement();
// It returns a tabular structure so we need
// ResultSet as it stores chunk of data into
// structures
ResultSet rs = st.executeQuery(query);
// Now we are having our data in object of ResultSet
// which is no more tabular
// Note:
// Fetching the above data by storing it as a String
// Here pointer is lagging with data for which we
// use next() method to
// take it to next record
rs.next();
// Here we are fetching username column data
String name = rs.getString("username");
// Lastly print the data
System.out.println(name);
// It is good practice to clsoe the connection
// using close() method
// Closing the statement first
st.close();
// Now close the connection also
con.close();
}
}
输出:
GeeksforGeeks