Java基础篇--jdbc

本文介绍JDBC(Java DataBase Connectivity)如何解决跨数据库访问难题,提供统一API,简化Java应用程序与数据库交互过程。涵盖数据库连接、SQL执行、结果处理等关键步骤。

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

java数据库操作

在jdbc之前,各个厂家只通过自己的API访问数据库,给开发人员访问不同数据库造成了很大困难,如果需要更换数据库,则需要修改大量代码。

JDBC(Java DataBase Connectivity),它提供一套统一的javaAPI,为各个数据库厂商提供了标准接口的实现。

使用jdbc链接数据库流程如下

  1. 加载数据库驱动
  2. 建立数据库连接
  3. 创建并执行sql语句对象(例如Statement、PreparedStatement)
  4. 处理结果集

Java数据类型和SQL数据类型映射关系如下

Java数据类型SQL数据类型长度(字节)
byte、ByteTINYINT1
Short、shortSMALLINT2
Integer、intINTEGER4
Long、longBIGINT8
Float、floatFLOAT2
Double、doubleDOUBLE8
Boolean、booleanBIT1
Character、charCHAR(1)固定长度,括号内数字表示字符数
StringVARCHAR(n)可变长度,括号中数字表示字符数

常用类和接口

DriverManager类是用来管理数据库所有驱动程序的,他作用于用户和驱动程序之间,管理可用的驱动程序,负责在数据库和驱动程序之间建立连接。

DriverManager的方法返回值类型描述
getConnection(String url)Connection创建指定数据库链接
getDriver(String url)Driver获取相应数据库驱动

Connection接口代表java程序与特定的数据库之间的连接,在对数据库进行操作之前,需要获取数据库的连接。

Connection方法返回值类型描述
createStatement()Statement创建Statement对象
prepareStatement(String sql)PreparedStatement创建PreparedStatement对象

Statement 接口用于创建向数据库中传递SQL语句的对象,该接口提供了一些可以实现对数据库的常用操作。 DML(数据操作语言)包括insert,delete、update。

Statement方法返回值类型描述
executeQuery(String sql)ResultSet执行查询语句,并返回查询结果对应RusultSet对象
executeUpdate(String sql)int执行DML语句,并返回受影响的行数
execute(String sql)boolean执行给定的sql语句,可能返回多个结果。如果执行后第一个结果为ResultSet对象,则返回false。如果执行后第一个结果为受影响的行数或没有任何结果,则返回false

PreparedStatement接口继承于Statement接口,用于执行动态sql语句。通过PreparedStatement执行sql语句,被预编译后可以反复执行。

PreparedStatement方法返回值类型描述
execute()boolean执行sql语句
executeQuery()ResultSet执行查询语句,并返回查询结果对应的ResultSet对象
executeUpdate()int执行DML语句

例:

oracle、mysql、sqlserver

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class CommodityTest {
	public static void main(String[] args){
		connectOracle();
		
	}

	public static void connectOracle(){
		Connection conn = null;//创建一个数据库连接
		PreparedStatement pre = null;//Statement容易出现sql注入
		ResultSet result = null;//创建一个结果集对象
		
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		//	Class.forName("com.mysql.jdbc.Driver");
		//	Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			
			
			String url = "jdbc:oralce"+"thin@loacalhost:1521:test";//oracle
		//	String url2 = "jdbc:mysql://localhost:3306/test"; //mysql
		//	String url3 = "jdvc:sqlserver://localhost:1433;DatabaseName=test";//sqlserver
			String user = "root";//连接用户名
			String password = "password";//连接密码
			conn = DriverManager.getConnection(url,user,password);//获取连接
			String sql = "select * from commodity where cname =?";
			pre = conn.prepareStatement(sql);
			pre.setString(1, "可口可乐");
			result = pre.executeQuery();
			while(result.next()){
				System.out.println("cname"+result.getString("cname")+" cid"+result.getInt("cid")+" cprice"+result.getInt("cprice"));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
		try {
			//先使用的先关闭
			if(conn!=null)
					conn.close();
			if(pre!=null)
					pre.close();
			if(result!=null)
					result.close();
			System.out.println("数据库连接已关闭");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		
		
	}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值