从实际来讲,Statement现在已经不使用了,他已经称为了历史。
Statement执行关键性问题在于他需要一个完整 的字符串定义要使用的SQL语句,而PreparedStatement可以动态的设置所需要的数据。
PrepareStatement属于Statement的子接口但是想要取得这个子接口的实例化对象,依然要使用COnnection提供的方法。
prepareStatement
PreparedStatement prepareStatement(String sql) throws SQLException
里面需要传入一个SQL语句,这个SQL是一个具有特殊标记的完整的SQL。 这个接口里面有很多的Set方法。
-更新操作 int
executeUpdate()
-查询操作 ResultSet
executeQuery()
范例:
package cn; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.Date; public class Test { private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:mldn"; private static final String USER = "scott" ; private static final String PASSWORLD = "tiger" ; public static void main(String[] args) throws Exception{ String name = "MR‘SMITH"; Date birthday = new Date() ; int age = 18 ; String note = "是个歪果仁" ; //第一步 加载数据库驱动程序,此时不需要实例化,会有容器自己负责管理 Class.forName(DBDRIVER) ; //第二步 连接数据库 每一个Connection都代表一个数据库连接 Connection conn = DriverManager.getConnection(DBURL,USER,PASSWORLD) ; String sql = "INSERT INTO member (mid,name,birthday,age,note) VALUES(myseq.nextval,?,?,?,?)"; //第三步,进行数据库的数据操作 PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1,name); /*当使用了setDate的时候,使用的是java.sql.date而不事java.util.date,而java.util.date下有三个子类, Date Time Timestmp 三个子类 转型方法依靠long完成 java.util.date下有一个方法将日期变为long */ stmt.setDate(2, new java.sql.Date(birthday.getTime())); stmt.setInt(3, age); stmt.setString(4, note); int len = stmt.executeUpdate(); System.out.println(conn) ; //关闭连接 stmt.close(); conn.close(); } }
查询操作:
查询全部数据:
//第一步 加载数据库驱动程序,此时不需要实例化,会有容器自己负责管理 Class.forName(DBDRIVER) ; //第二步 连接数据库 每一个Connection都代表一个数据库连接 Connection conn = DriverManager.getConnection(DBURL,USER,PASSWORLD) ; String sql = "SELECT mid,name,birthday,age,note FROM member WHRER ORDER BY NAME"; //第三步,进行数据库的数据操作 PreparedStatement stmt = conn.prepareStatement(sql); ResultSet rs = stmt.executeQuery(); while(rs.next()){ int mid = rs.getInt(1); String name = rs.getString(2); Date birthday = rs.getDate(3); int age = rs.getInt(4); String note = rs.getString(5); System.out.println(mid + " " + name + " " + birthday + "" + age + "" + note); } int len = stmt.executeUpdate(); System.out.println(conn) ; //关闭连接 stmt.close(); conn.close();
模糊查询:
时间: 2024-10-12 23:15:01