天天看点

PreparedStatement 接口简介|学习笔记

开发者学堂课程【Java高级编程:PreparedStatement 接口简介】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:

https://developer.aliyun.com/learning/course/20/detail/438

preparedSratement 操作数据库

为了解决 Statement 接口存在的 SQL 执行问题,所以在 java.sql 包里面又提供有一个Statement 子接口:

PrearedStatement,,这个接口最大的好处是可以编写正常的 SQL(数据不再和 SQL 语法混合在一起),同时利用占位符的形式,在 SQL 正常执行完毕后可以进行数据的设置。

观察 PreparedStatement 接口定义:

Public interface PreparedStatement extends Statement

如果要想获取 PreparedStatement 接口的实例,则依然需要通过 Connection 接口来实现,创建方法:

创建PreparedStatement接口对象:

public PreparedStatement

prepareStatement(String sql) throw SQLException;

由于SQL语句已经在创建 PreparedStatement 接口对象的时候提供了,所以在执行数据库操作的时候也要更换方法。

数据库更新:

public int executeUpdate() throw SQLException;

数据库查询:

public ResultSet executeQuery() throw SQLException。

PreparedStatement 接口简介|学习笔记

范例:利用 preparedStatement 解决之前的数据操作问题

package cn . mldn . demo ;

import java . sql . Connection ;

import java .sq1.DriverManager;

import java .sq1.PreparedStatement;

import java .utl1.Date;

public class JDBCDemo {

private statie final String DATABASE _ DRVIER =" oracle . jdbe . driver . OracleDriver ";

private static final String DATABASE _ URL =" jdbc : oracle : thin :@1oca1host:1521:mldn";

private static final String DATAASE _ USER =" scott ”;

private static final String DATABASE _ PASSNORD =" tiger ”;

pub1ie statie void main ( String [] args ) throws Exception {

String title =" MLDN 新闻'老李写的”;

Int read 99;

double price =99.8;

String content =“这个春天有点冷”;

Datel pubdate = new . Date ();

String sql =" INSERT INTo news ( nid , title , read , price , content , pubdate ) VALUES "+"( news _ seq . nextval ,?,?,?,?)";//使用了"?”作为占位符

Connection conn =null;//每一个 Connection 接口对象摺述的就是一个用户连接

Class . forName ( DATABASE _ DRVIER );//向容器之中加载数据岸驱动程序

conn В DriverManager . getConnection ( DATABASE _ URL , DATABASE _ USER , DATABASE _ PASSWORD);

PreparedStatement pstmt = conn . prepareStatement (sql);//创建教据库的操作对象

//在执行具体的数据库操作之前需要为占位符设置内容。按照顺序设置

pstmt , setString (1, title );

pstmt . setInt (2, read );

pstmt . setDouble (3, price );

pstmt . setString (4, content );

pstmt . setDate (5, new java .sq1.Date( pubdate . getTime );

int count = pstmt , executeUpdate ();/返回影响的行数

System , out , println (”更新操作影响的数据行数,"+ count );

conn . close ();//数据库的连接资源有限一定要关闭

}

}

}

在 JDBC 里面不管使用的是 preparedStatement 设置的日期时间还是使用 ResultSet 获取的日期时间实际上都是 java.util,Date 的子类,也就是说现在是如下的对应关系。

PreparedStatement 接口简介|学习笔记