jdbc

Java Database Connectivity (JDBC) 是Sun公司提供的用于连接数据库的规范接口。本文详细介绍了JDBC连接数据库的必要条件,如主机地址、用户名和密码,以及JDBC连接数据库的步骤,包括注册驱动、创建数据库连接对象、声明Statement类。内容涵盖不同数据库的URL格式,如Oracle、MySQL和SQL Server,并解释了如何导入第三方Jar包、创建Statement对象和执行SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java Database Connectivity (JDBC)

Sun公司提供的一个Java连接数据库的规范接口,而Sun公司没有实现其他中任何一个方法,要求数据库的第三方提供商实现的。主要用于连接数据库。

连接数据库的必要条件:

    1. mysql 确定连接的内容是MySQL
    2. 主机地址
    3. 用户名
    4. 密码

JDBC获取数据库连接:
    URL Uniform Resource Locator  统一资源定位符

JDBC的URL=协议名+子协议名+数据源名。
a 协议名总是“jdbc”。
b 子协议名由JDBC驱动程序的编写者决定。
c 数据源名也可能包含用户与口令等信息;这些信息也可单独提供。

几种常见的数据库连接


-------------------------------oracle------------------
驱动:oracle.jdbc.driver.OracleDriver
URL:jdbc:oracle:thin:@machine_name:port:dbname
注:machine_name:数据库所在的机器的名称;
      port:端口号,默认是1521

-------------------------------mysql-------------------
驱动:com.mysql.jdbc.Driver
URL:jdbc:mysql://machine_name:port/dbname
注:machine_name:数据库所在的机器的名称;
      port:端口号,默认3306    

---------------------------SQL Server------------------
驱动:com.microsoft.jdbc.sqlserver.SQLServerDriver
URL:jdbc:microsoft:sqlserver://<machine_name><:port>;DatabaseName=<dbname>
注:machine_name:数据库所在的机器的名称;
      port:端口号,默认是1433

--------------------------DB2--------------------------
驱动:com.ibm.db2.jdbc.app.DB2Driver
URL:jdbc:db2://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
      port:端口号,默认是5000
-------------------------------------------------------

 

第三方Jar包导入和连接数据库

会使用到的包              说明

java.sql

所有与 JDBC 访问数据库相关的接口和类

javax.sql

数据库扩展包,提供数据库额外的功能。如:连接池

数据库的驱动

由各大数据库厂商提供,需要额外去下载,是对 JDBC 接口实现的类

jdbc常用api

接口或类                             作用

DriverManager

  1. 管理和注册数据库驱动
  2. 得到数据库连接对象

Connection 接口

一个连接对象,可用于创建 Statement 和 PreparedStatement 对象

Statement 接口

一个 SQL 语句对象,用于将 SQL 语句发送给数据库服务器。

PreparedStatemen 接口

一个 SQL 语句对象,是 Statement 的子接口

ResultSet 接口

用于封装数据库查询的结果集,返回给客户端 Java 程序

注册驱动(DriverManager)

注册驱动程序最常见的方法是使用Java的Class.forName()方法,将驱动程序的类文件动态加载到内存中,并将其自动注册 Class.forName("oracle.jdbc.driver.OracleDriver");

可以用来注册驱动程序的第二种方法是使用静态DriverManager.registerDriver()方法

 Driver myDriver = new com.mysql.jdbc.Driver();

 DriverManager.registerDriver( myDriver );

数据库连接类 (Connection)创建数据库连接对象

 

数据库URL配置

加载驱动程序后,可以使用DriverManager.getConnection()方法建立连接。为了方便参考,让我列出三个重载的DriverManager.getConnection()方法 -

  • getConnection(String url)

  • getConnection(String url,Properties prop)

  • getConnection(String url,String user,String password)

String URL = "jdbc:mysql://localhost:3306/EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

使用数据库URL和属性对象

String URL = "jdbc:mysql://localhost:3306/EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

声明类(Statement)

Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,它们都作为在给定链接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement继承而来)。它们都专用于发送特定类型的SQL语句:

(1)Statement对象用于执行不带参数的简单的SQL语句;Statement接口提供了执行语句和获取结果的基本方法。

(2)PerparedStatement对象用于执行带或不带IN参数的预编译SQL语句;PeraredStatement接口添加处理IN参数的方法;

(3)CallableStatement对象用于执行对数据库已存储过程的调用;CallableStatement添加处理OUT参数的方法。

Statement提供了许多方法,最常用的方法如下:

(1)execute()方法:运行语句,返回是否有结果集。

(2)executeQuery()方法:运行查询语句,返回ReaultSet对象。

(3)executeUpdata()方法:运行更新操作,返回更新的行数。

(4)addBatch()方法:增加批处理语句。

(5)executeBatch()方法:执行批处理语句。

(6)clearBatch()方法:清除批处理语句。

 

在使用Statement对象执行SQL语句之前,需要使用Connection对象的createStatement()方法创建一个,

stmt = conn.createStatement( );

创建Statement对象后,您可以使用它来执行一个SQL语句,其中有三个执行方法之一。

  • boolean execute(String SQL):如果可以检索到ResultSet对象,则返回一个布尔值true; 否则返回false。使用此方法执行SQL DDL语句或需要使用真正的动态SQL时。

  • int executeUpdate(String SQL):返回受SQL语句执行影响的行数。使用此方法执行预期会影响多个行的SQL语句,例如INSERT,UPDATE或DELETE语句。

  • ResultSet executeQuery(String SQL):返回一个ResultSet对象。当您希望获得结果集时,请使用此方法,就像使用SELECT语句一样。

SQL注入

就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。

PreparedStatement

PreparedStatement的接口扩展了Statement接口,它为您提供了一个通用的Statement对象有两个优点附加功能。

String SQL = "Update Employees SET age = ? WHERE id = ?";

 pstmt = conn.prepareStatement(SQL);

JDBC中的所有参数都由符号,这被称为参数标记。在执行SQL语句之前,必须为每个参数提供值。

所述的setXXX()方法将值绑定到所述参数,其中XXX代表要绑定到输入参数的值的Java数据类型。如果忘记提供值,将收到一个SQLException。

每个参数标记由其顺序位置引用。第一个标记表示位置1,下一个位置2等等。该方法与Java数组索引不同,从0开始。

结果集合类 (ResultSet)

SELECT语句是从数据库中选择行并在结果集中查看行的标准方法。该java.sql.ResultSet中的接口表示结果集数据库查询。

使用步骤构建JDBC应用程序涉及以下六个步骤:

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。大多数情况下,使用import java.sql。*就足够了。

  • 注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。

  • 打开连接:需要使用DriverManager.getConnection()方法创建一个Connection对象,该对象表示与数据库的物理连接。

  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。

  • 从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。

释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

1 import java.sql.DriverManager;
 2 import java.sql.ResultSet;
 3 import java.sql.SQLException;
 4 import java.sql.Statement;
 5 import java.sql.Connection;
 6 import java.sql.DriverManager;
 7 import java.sql.SQLException;
 8 
 9 
10 public class javaTest {
11    
12     public static void main(String[] args) throws ClassNotFoundException, SQLException  {
13         String URL="jdbc:mysql://127.0.0.1:3306/imooc?useUnicode=true&amp;characterEncoding=utf-8";
14         String USER="root";
15         String PASSWORD="tiger";
16         //1.加载驱动程序
17         Class.forName("com.mysql.jdbc.Driver");
18         //2.获得数据库链接
19         Connection conn=DriverManager.getConnection(URL, USER, PASSWORD);
20         //3.通过数据库的连接操作数据库,实现增删改查(使用Statement类)
21         Statement st=conn.createStatement();
22         ResultSet rs=st.executeQuery("select * from user");
23         //4.处理数据库的返回结果(使用ResultSet类)
24         while(rs.next()){
25             System.out.println(rs.getString("user_name")+" "
26                           +rs.getString("user_password"));
27         }
28         
29         //关闭资源
30         rs.close();
31         st.close();
32         conn.close();
33     }
34 }

(1)加载驱动程序:Class.forName(driverClass)

加载mysql驱动:Class.forName("com.mysql.jdbc.Driver");

加载oracle驱动:Class.forName("oracle.jdbc.driver.OracleDriver");

(2)获得数据库连接

DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc",user,password);

DriverManager.gerConnection(URL,user,password);

(3)创建Statement对象:conn.createStatement();

(4)向数据库发送SQL命令

(5)处理数据库的返回结果(ResultSet类)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值