use*_*252 1 java sql optimization jdbc
嗨,我正在尝试学习JDBC。这是我的问题:
PreparedStatement在JDBC中的用途是什么,因为我们也可以通过使用实现相同的效果createStatement();。
我的意思是如果有这样的查询:
Select * from tbl_name where id = somevalue
Run Code Online (Sandbox Code Playgroud)
然后我们可以通过PreparedStatement和实现createStatement()。如下:
使用CreateStatement():
try {
DataInputStream dis=new DataInputStream(System.in);
System.out.println("Enter id :- ");
int id=Integer.parseInt(dis.readLine());
String q="Select * from tbl_name where id="+id;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(q);
while(rs.next()) {
//fetching part
}
} catch(Exception ex){ ... }
Run Code Online (Sandbox Code Playgroud)
使用PreparedStatement:
try {
PreparedStatement preStatement=conn.prepareStatement("Select * from tbl_name where id=?");
DataInputStream dis=new DataInputStream(System.in);
System.out.println("Enter id:- ");
int id=Integer.parseInt(dis.readLine());
preStatement.setInt(1, id);
ResultSet result = preStatement.executeQuery();
while(result.next()){
// fetch the data
}
}catch(Exception ex){ ... }
Run Code Online (Sandbox Code Playgroud)
由于这两个程序都能够执行相同的任务。
准备好的语句概念并非特定于Java,它是数据库概念。语句的预编译意味着,当您执行SQL查询时,数据库服务器将在执行实际查询之前准备一个执行计划,该执行计划将被缓存在数据库服务器中以供进一步执行。
预备报表的优点是: