如何创建数据库连接?
Java Database Connectivity 是一个标准 API,或者我们可以说是Java编程语言和各种数据库(如 Oracle、SQL、PostgreSQL、MongoDB 等)之间的应用程序接口。它基本上将前端(用于与用户交互)与用于存储用户在表详细信息中输入的数据的后端。 JDBC 或Java数据库连接通过以下步骤创建数据库:
- 导入数据库
- 加载和注册驱动程序
- 创建连接
- 创建声明
- 执行查询
- 处理结果
- 关闭连接
第一步:导入数据库
Java由许多包组成,这些包简化了对每个逻辑进行硬编码的需要。它具有 JDBC 连接所需的内置 SQL 包。
句法:
import java.sql* ;
第 2 步:加载和注册驱动程序
这是由 JVC(Java虚拟机)完成的,它将某些驱动程序文件加载到对 JDBC 的工作至关重要的辅助内存中。
句法:
forName(com.mysql.jdbc.xyz);
class.forname() 方法是注册驱动程序最常用的方法。它动态地将驱动程序文件加载到内存中。
例子:
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException e) {
System.out.println("cant load driver class!");
System.Exit(1);
}
这里使用了oracle数据库。现在让我们考虑一个随机的酒店数据库管理系统示例。现在在其上应用 SQL 命令,将该数据库命名为“样本”。现在假设用户开始在其中插入名为“sample1”和“sample2”的表。
Java
// Connections class
// Importing all SQL classes
import java.sql.*;
public class connection{
// Object of Connection class
// initially assigned NULL
Connection con = null;
public static Connection connectDB()
{
try
{
// Step 2: involve among 7 in Connection
// class i.e Load and register drivers
// 2(a) Loading drivers using forName() method
// Here, the name of the database is mysql
Class.forName("com.mysql.jdbc.Driver");
// 2(b) Registering drivers using DriverManager
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/database",
"root", "1234");
// Root is the username, and
// 1234 is the password
// Here, the object of Connection class is return
// which further used in main class
return con;
}
// Here, the exceptions is handle by Catch block
catch (SQLException | ClassNotFoundException e)
{
// Print the exceptions
System.out.println(e);
return null;
}
}
}
Java
// Importing SQL libraries to create database
import java.sql.*;
class GFG{
// Step 1: Main driver method
public static void main(String[] args)
{
// Step 2: Creating connection using
// Connection type and inbuilt function
Connection con = null;
PreparedStatement p = null;
ResultSet rs = null;
con = connection.connectDB();
// Here, try block is used to catch exceptions
try
{
// Here, the SQL command is used to store
// String datatype
String sql = "select * from customer";
p = con.prepareStatement(sql);
rs = p.executeQuery();
// Here, print the ID, name, email
// of the customers
System.out.println("id\t\tname\t\temail");
// Check condition
while (rs.next())
{
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println(id + "\t\t" + name +
"\t\t" + email);
}
}
// Catch block is used for exception
catch (SQLException e)
{
// Print exception pop-up on the screen
System.out.println(e);
}
}
}
第 3 步:创建连接
创建连接由 DriverManager 类的 getconnection() 方法完成,它包含数据库 URL、用户名和密码作为参数。
句法:
public static Connection getConnection(String URL, String Username, String password)
throws SQLException
例子:
String URL = "jdbc:oracle:thin:@amrood:1241:EMP";
String USERNAME = "geekygirl";
String PASSWORD = "geekss"
Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
这里,
数据库 URL 看起来像 - jdbc:oracle:thin:@amrood:1221:EMP
用户名是-“geekygirl”
密码是“极客”
第 4 步:创建声明
创建查询语句以按照正确的语法与数据库交互。在编写查询之前,我们必须使用 connect() 方法连接数据库。例如:
conn = connection.connectDB();
String sql = "select * from customer";
该语句基本上显示了客户表的内容。我们还可以使用 Connection 接口的 createStatement() 方法创建语句。在这里,语句的对象主要负责执行查询。
句法:
public Statement createStatement()throws SQLException
例子:
Statement s = conn.createStatement();
第 5 步:执行查询
为了执行查询(上面写的),我们需要将查询转换为 JDBC 可读格式,为此我们使用preparedstatement()函数,为了执行转换后的查询,我们使用Statement 接口的executequery()函数。它返回用于查找所有表记录的“rs”对象。
句法:
public rs executeQuery(String sql)throws SQLException
例子:
p = conn.prepareStatement(sql);
rs = p.executeQuery();
第 6 步:处理结果
现在我们检查 rs.next() 方法是否不为空,然后我们在“客户”表中显示该特定客户的详细信息。next()函数基本上检查是否有任何记录满足查询,如果没有记录满足条件,然后它返回null。下面是示例代码:
while (rs.next())
{
int id = rs.getInt("cusid");
String name = rs.getString("cusname");
String email = rs.getString("email");
System.out.println(id + "\t\t" + name +
"\t\t" + email);
}
第 7 步:关闭连接
执行完所有操作后,在不再需要数据库会话后,需要关闭 JDBC 连接。如果没有明确完成,那么Java垃圾收集器会为我们完成这项工作。然而作为一个优秀的程序员,让我们学习如何关闭 JDBC 的连接。所以关闭JDBC连接使用close()方法,这个方法关闭所有的JDBC连接。
句法:
public void close()throws SQLException
例子:
conn.close();
示例代码如上图所示:
Java
// Importing SQL libraries to create database
import java.sql.*;
class GFG{
// Step 1: Main driver method
public static void main(String[] args)
{
// Step 2: Creating connection using
// Connection type and inbuilt function
Connection con = null;
PreparedStatement p = null;
ResultSet rs = null;
con = connection.connectDB();
// Here, try block is used to catch exceptions
try
{
// Here, the SQL command is used to store
// String datatype
String sql = "select * from customer";
p = con.prepareStatement(sql);
rs = p.executeQuery();
// Here, print the ID, name, email
// of the customers
System.out.println("id\t\tname\t\temail");
// Check condition
while (rs.next())
{
int id = rs.getInt("id");
String name = rs.getString("name");
String email = rs.getString("email");
System.out.println(id + "\t\t" + name +
"\t\t" + email);
}
}
// Catch block is used for exception
catch (SQLException e)
{
// Print exception pop-up on the screen
System.out.println(e);
}
}
}
输出: