天天看点

java web笔记——JDBC

SUN公司为了简化、统一对数据库的操作,定义了一套java操作数据库的规范,称之为JDBC。

JDBC全称:Java Data Base Connectivity(java数据库连接),它主要由接口组成。

组成JDBC的两个包:java.sql javax.sql。开发JDBC需要以上两个包的支持外,还需要导入相应JDBC的数据库实现(即数据库驱动)。

从数据库中读取数据:

1.导入数据驱动

2.在程序中加载数据驱动 DriverManager.registerDriver(Driver driver);

3.建立连接 Connection conn = DriverManager.getConnection(url,user,pass);

4.创建用于向数据库发送SQL的Statement对象,并发送sql

Statement st = conn.createStatement();

ResultSet rs = st.excuteQuery(sql);

5.从代表结果集的ResultSet中取出数据

6.断开与数据库的连接,并释放相关资源

注意:在实际开发中并不推荐采用DriverManager.registerDriver(Driver driver)方法注册驱动, 原因:1.查看Driver的源码可以看到,采用此方式会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。2.程序依赖于import的驱动api,脱离了驱动jar包,程序将无法编译,切换数据库将会变得麻烦。

推荐方式:Class.forName(“com.mysql.jdbc.Driver”);采用此方式不会导致驱动对象在内存中重复出现,并且程序仅需要一个字符串,不用依赖具体的驱动,更加灵活。

url用于标识数据库的位置,告诉JDBC连接哪个数据库,url写法为:jdbc:mysql:[ ]//localhost:3306/database?参数名:参数值

常用的数据库url写法:jdbc:oracle:thin:@localhost:1521:database

jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=database

Mysql的url地址简写形式:jdbc:mysql:///database

常用属性:useUnicode=true&characterEncoding=UTF-8

Connction是数据库编程中最重要的一个对象,常用方法:createStatement();

prepareStatement(sql);创建向数据库发送预编译sql的PrepareStatement对象

prepareCall(sql);创建执行存储过程的callableStatement对象

setAutoCommit(boolean autoCommit);设置事务是否自动提交

commit();在连接上提交事务

rollback();在此连接上回滚事务

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

SQL类型 | Jdbc对应方法

bit(1)/bit(10) | getBoolean()/getBytes()

tinyint | getByte()

smallint | getShort()

int | getInt()

bigint | getLong()

char/vachar/longvachar| getString()

Text(clob) Blob | getClob()/getBlob()

date | getDate()(返回sql.Date)

time | getTime()(sql.Time)

timestamp | getTimestamp()(sql.Timestamp)

statement 和 prepareStatement区别

1.prepareStatement是statement的子类

2.prepareStatement可以防止SQL注入问题

3.prepareStatement会对sql语句进行预编译,减轻数据库服务器压力