preparedStatement比statement的好处:
1.预编译,前提是数据库支持预编译,如果数据库不支持,就和statement效果一样
2.动态传参
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PreparedStatement {
/**
* @Title: main
* @Description:
* @param:
* @return void
* @user: wangzg
* @Date:2014-7-1
* @throws
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Connection conn = null;
java.sql.PreparedStatement pstm = null;
ResultSet rs = null;
try {
conn = getConnection();
//预编译,动态传参,效率比statement高
pstm = conn.prepareStatement("select * from t_user where user_name = ?");
pstm.setString(1, "wzg");
rs = pstm.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
System.out.println(rs.getString("USER_NAME"));
}
pstm = conn.prepareStatement("insert into t_user(user_id,user_name,user_password) values(TEST_SEQUENCE.NEXTVAL,?,?)");
pstm.setString(1, "wzg");
pstm.setString(2, "wzg");
pstm.executeUpdate();
rs.close();
pstm.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
*
* @Title: getConnection
* @Description:
* @param:
* @return Connection
* @user: wangzg
* @Date:2014-7-7
* @throws
*/
public static Connection getConnection() throws ClassNotFoundException, SQLException{
Connection conn = null;
//加载oracle驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//连接数据库
String url = "jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
String user ="wzg";
String password = "wzg";
conn = DriverManager.getConnection(url, user, password);
return conn;
}
}