JavaWeb——JDBC_总结

来源:互联网 发布:巨人数据库 编辑:程序博客网 时间:2024/06/10 23:29

1.JDBC概述:

Java database connection:java数据库连接;

为什么要用Java连接数据库?

我们所需要的程序是自动化执行的,不是通过键盘在控制台下输入命令来控制DB的

JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库

2.JDBC步骤:

l 导入jar包

l 注册驱动

l 获得连接

l 获得发送命令对象

l 发送命令,获得返回资源

l 处理返回的资源

l 关闭资源

    2.1  DriverManager类讲解

  Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法

  Class.forName("com.mysql.jdbc.Driver");

  DriverManager.getConnection(url, user, password),

    2.2   数据库URL讲解

   URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库

常用数据库URL地址的写法:

  Oracle写法: jdbc:oracle:thin:@localhost:1521:sid

  SqlServer写法: jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid

  MySql写法: jdbc:mysql://localhost:3306/sid

 
  如果连接的是本地的Mysql数据库,并且连接使用的端口是3306,
 那么的url地址可以简写为: jdbc:mysql:///数据库

    2.3  Connection类讲解

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

    2.4 Statement类讲解

 Jdbc程序中的Statement对象用于向数据库发送SQL语句,Statement对象常用方法:
 
executeQuery(String sql) :用于向数据发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
 

     2.5 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语句中。

3.使用JDBC对数据库进行CRUD

    3.1 statement对象介绍

Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需
要通过这个对象向数据库发送增删改查语句即可.
 
executeUpdate方法,用于向数据库发送增、删、改的sql语句,
        executeUpdate执行完后,将会返回一个整数(即增删改语句导致了
        数据库几行数据发生了变化)。
executeQuery方法用于向数据库发送查询语句,
         executeQuery方法返回代表查询结果的ResultSet对象.
* createStatement st = conn.createStatement();String sql = "insert into user(….) values(…..) "; int num = st.executeUpdate(sql);if(num>0){    System.out.println("插入成功!!!");} * updateStatement st = conn.createStatement();String sql = “update user set name=‘’ where name=‘’"; int num = st.executeUpdate(sql);if(num>0){    System.out.println(“修改成功!!!");} * deleteStatement st = conn.createStatement();String sql = “delete from user where id=1; int num = st.executeUpdate(sql);if(num>0){    System.out.println(“删除成功!!!");} * readStatement st = conn.createStatement();String sql = “select * from user where id=1; ResultSet rs = st.executeUpdate(sql);while(rs.next()){    //根据获取列的数据类型,分别调用rs的相应方法映射到java对象中}

    3.2 PreparedStatement对象介绍

PreperedStatement是Statement的子类
相对于Statement:
PreperedStatement获取方式不一样
性能高
    可以防止SQL注入

获得方式:它的实例对象可以通过调用Connection.preparedStatement()方法获得,
相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题。
 
Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,
从而提高数据库的 执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,
简化sql语句的编写。

String sql = “select * from tab_student where s_number=?”;PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString(1, “S_1001”);ResultSet rs = pstmt.executeQuery();rs.close();

SQL注入

 SELECT * FROM users WHERE NAME= 'ss' AND PASSWORD = '' OR '1' = '1'; 
 SELECT * FROM users WHERE NAME= 'ss' AND PASSWORD = '';DROP TABLE users;


4.MySQL数据库中操作事务命令

开启事务(start transaction)
        使用"start transaction"开启MySQL数据库的事务

提交事务(commit)

回滚事务(rollback)

5.JDBC中使用事物

当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句.若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用下列的JDBC控制事务语句Connection.setAutoCommit(false);//开启事务(start transaction)Connection.rollback();//回滚事务(rollback)Connection.commit();//提交事务(commit)

6.使用JDBC进行批处理

在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用
JDBC的批处理机制,以提升执行效率.
JDBC实现批处理有两种方式:statement和preparedstatement

6.1 使用Statement完成批处理

1.使用Statement对象添加要批量执行SQL语句,如下: Statement.addBatch(sql1); Statement.addBatch(sql2); Statement.addBatch(sql3);2、执行批处理SQL语句:Statement.executeBatch();3、清除批处理命令:Statement.clearBatch(); 采用Statement.addBatch(sql)方式实现批处理的优缺点 优点:可以向数据库发送多条不同的SQL语句。 缺点:SQL语句没有预编译。insert into account values(1,’DD’,100);

6.2 使用PreparedStatement完成批处理

使用PreparedStatement完成批处理范例
long starttime = System.currentTimeMillis();




0 0
原创粉丝点击