【JAVA】 Statement与PreparedStatement的区别(实例代码对比)
1、Statement(一句没有传递参数的SQL语句,可以称之为常量,就是没有变量的SQL语句)
// 载入数据库驱动
Class.forName(driver);
// 建立数据库连接getconnection(jdbc:mysql://地址:端口号/数据库名,数据库用户名,密码)
Connection con = DriverManager.getConnection(url,username,password);
// 通过Statement执行SQL语句
String sql="select * from aaa where old=88"; // Statement条件是常量,固定值
PreparedStatement st=con.createStatement();
ResultSet rs=st.executeQuery(sql);
// 遍历读取Sql的数据
while(rs.next()){
String name=rs.getString("Name");
String old=rs.getString("Old");
System.out.println("姓名:"+name+" 年龄:"+old+"\n");
}
2、PreparedStatement(可以把变量传入到SQL语句中)
// 载入数据库驱动
Class.forName(driver);
// 建立数据库连接getconnection(jdbc:mysql://地址:端口号/数据库名,数据库用户名,密码)
con = DriverManager.getConnection(url,username,password);
// 通过ProparedStatement执行带变量参数的SQL语句
String m_name="张飞"; // 问号的变量
int m_old=88; // 问号的变量
String sql="select * from aaa where Name=? or Old=?";
st=con.prepareStatement(sql);
st.setString(1,m_name); // 把变量赋值到Sql语句中,第一个问号
st.setInt(2, m_old); // 把变量赋值到Sql语句中,第二个问题
rs=st.executeQuery();
// 遍历读取Sql的数据
while(rs.next()){
String name=rs.getString("Name");
String old=rs.getString("Old");
System.out.println("姓名:"+name+" 年龄:"+old+"\n");
}