失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用

Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用

时间:2020-07-31 23:21:47

相关推荐

Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用

1,Statement对象是Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句。

Statement 对象用于将 SQL 语句发送到数据库中。实际上有三种 Statement 对象,它们都作为在给定连接上执行SQL语句的包容器: Statement 对象用于执行不带参数的简单SQL语句;

PreparedStatement(它从 Statement 继承而来)用于执行带或不带 IN 参数的预编译 SQL 语句;

CallableStatement(它从 PreparedStatement 继承而来)CallableStatement 对象用于执行对数据库已存在的存储过程的调用。它们都专用于发送特定类型的 SQL 语句。

上文中

Statement stmt = con.createStatement();//Statement对象实例ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");//执行SQL语句,并把结果集放在ResultSet对象中while (rs.next()) { //对结果集进行遍历int x = rs.getInt("a"); //获得字段a的值String s = rs.getString("b");float f = rs.getFloat("c");}

第一步:创建Statement对象实例stmt后,调用该对象的executeQuery(sql)方法执行参数sql语句;当然,Statement对象还有很多方法,如executeUpdate(String sql);

第二步:根据sql语句执行查询语句后,得出的是一个结果集或者说还是一张表,放在ResultSet 的对象rs中

第三步:循环遍历结果集rs,rs.next()方法每次指向结果集的一项记录或者说是一栏,循环体中调用get方法如rs.getString(“b”);参数是表的字段名。就可得到该字段中的值

2,该 PreparedStatement接口继承Statement,并与之在两方面有所不同:

PreparedStatement 实例包含已编译的 SQL 语句。这就是使语句“准备好”。包含于 PreparedStatement 对象中的 SQL 语句可具有一个或多个 IN 参数。IN参数的值在 SQL 语句创建时未被指定。相反的,该语句为每个 IN 参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的setXXX 方法来提供。

由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。

通过使用java.sql.preparedstatement,这个问题可以自动解决。一个preparedstatement是从java.sql.connection对象和所提供的sql字符串得到的,sql字符串中包含问号(?),这些问号标明变量的位置,然后提供变量的值,最后执行语句,例如:

string sql = "select * from people where id = ? and name = ?";//先定义要执行的sql语句ps.setint(1,id);// 设置问号里的变量值ps.setstring(2,name);PreparedStatement ps = connection.prepareStatement(sql);Resultset rs = ps.executequery();while(rs.next()){String u=rs.getString("id");String p=rs.getString("name"); }

使用preparedstatement的另一个优点是字符串不是动态创建的.

PreparedStatement对象较Statement对象有很好代码的可读性和可维护性:比如

stmt.executeUpdate("insertintotb_name(col1,col2,col2,col4)values('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");

perstmt=con.prepareStatement("insertintotb_name(col1,col2,col2,col4)values(?,?,?,?)");perstmt.setString(1,var1);perstmt.setString(2,var2);perstmt.setString(3,var3);perstmt.setString(4,var4);perstmt.executeUpdate();

不用我多说,对于第一种方法.别说其他人去读你的代码,就是你自己过一段时间再去读,都会觉得伤心.

下面将给出一个完整的访问数据库的例子。

如果觉得《Java数据库连接(JDBC)之二:Statement对象和PreparedStatement对象的使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。