JDBC(初识)

it2022-05-05  125

JDBC(初识)

jdbc简介

JDBC:Java Database Connectivity(java数据库连接),主要由接口组成。

JDBC 是一个接口,其中有一套为了简化、统一对数据库操作的,java操作数据库的规范。可以通过jdbc加载具体的驱动,从而操作数据库。

jdbc程序的编写

jdbc简单来说就是关联数据库和java得到纽带

搭建实验环境,建立数据库,并在其中建立数据表;

create database jdbcStudy character set utf8 collate utf8_general_ci; use jdbcStudy; create table student( id int primary key, name varchar(40), password varchar(40), email varchar(60), birthday date); insert into student (id,name,password,email,birthday) values (1,'zhansan','123456','zs@sina.com','1980-12-04'); insert into student (id,name,password,email,birthday) values (2,'lisi','123456','lisi@sina.com','1981-12-04'); insert into student (id,name,password,email,birthday) values (3,'wangwu','123456','wangwu@sina.com','1979-12-04')

新建java工程,并导入数据库;

新建一个database.properties配置文件存放数据库相关信息;

jdbc:mysql://localhost:3306/school 协议:子协议://主机:端口/数据库 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/school user=root password=123456

编写程序从数据表中,读取数据;(友情提示一定要导包!!!!!)

import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class asd { private static String driver=null; private static String url=null; private static String user=null; private static String password=null; public static void main(String[] args) throws SQLException { inp(); } private static void inp() throws SQLException { try { InputStream ras = asd.class.getClassLoader().getResourceAsStream("ghjkl.properties"); Properties pro = new Properties(); pro.load(ras); driver=pro.getProperty("driver"); url=pro.getProperty("url"); user= pro.getProperty("user"); password= pro.getProperty("password"); Class.forName(driver); } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection con = DriverManager.getConnection(url, user, password); Statement sta = con.createStatement(); ResultSet res = sta.executeQuery( "select id,name,email,birthday from student"); while (res.next()){ System.out.println(res.getObject("id")); System.out.println(res.getObject("name")); System.out.println(res.getObject("email")); System.out.println(res.getObject("birthday")); } res.close(); sta.close(); con.close(); } }

DeiverManager类

DriverManager在jdbc中用于加载驱动,并创与数据库的链接;

使用方法:

DriverManager.registerDriver(new Driver())

DriverManager.getConnection(url, user, password)

由于采用registerDriver加载驱动会出现很多问题,所以实际我们并不推荐使用此方法加载驱动,而是使用Properties pro = new Properties();driver=pro.getProperty(“driver”);Class.forName(driver);(采用此种方式不会导致驱动对象在内存中重复出现,并且采用此种方式,程序仅仅只需要一个字符串,不需要依赖具体的驱动,使程序的灵活性更高)。

Connection类

Connection类在jdbc中代表数据库的链接,Connection是数据库编程过程中的一个重要对象,客户端与数据库交互都是通过Connection对象完成的;Connection对象的常用方法: createStatement():创建向数据库发送sql的statement对象。prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。prepareCall(sql):创建执行存储过程的callableStatement对象。setAutoCommit(boolean autoCommit):设置事务是否自动提交。commit() :在链接上提交事务。rollback() :在此链接上回滚事务。

Statement类

Statement对象在jdbc中用于向数据库发送SQL语句,从而实现java操作数据库的目的;Statement对象常用方法: executeQuery(String sql) :用于向数据发送查询语句。executeUpdate(String sql):用于向数据库发送insert、update或delete语句execute(String sql):用于向数据库发送任意sql语句addBatch(String sql) :把多条sql语句放到一个批处理中。executeBatch():向数据库发送一批sql语句执行。

ResultSet类

Jdbc程序中的ResultSet用于代表Sql语句的执行结果;

Resultset封装执行结果时,采用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。

ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:

获取任意类型的数据

getObject(int index)

getObject(string columnName)

获取指定类型的数据,例如:

getString(int index)

getString(String columnName)

ResultSet还提供了对结果集进行滚动的方法:

next():移动到下一行;Previous():移动到前一行;absolute(int row):移动到指定行;beforeFirst():移动resultSet的最前面;afterLast() :移动到resultSet的最后面。

释放资源

在jdbc运行完成后切记释放资源。程序在运行过程中,创建的那些与数据库进行交互的对象(通常是ResultSet, Statement和Connection对象),尤其是Connection对象,它用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统问题。Connection的使用原则是尽量晚创建,尽量早的释放。为确保资源释放代码能运行,资源释放代码也尽量要放在finally语句中,保证执行。

最新回复(0)