这个要交给与之相对应的数据库驱动程序来出来,在后台数据库连接的时候就不能字符串拼接的方法。
比如说
不安全的是用字符串拼接的。
不安全的:
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
// 2.建立连接
conn = JdbcUtils.getConnection();
// conn = JdbcUtilsSing.getInstance().getConnection();
// 3.创建语句
String sql = "select id, name, money, birthday from user where name='"
+ name + "'";
st = conn.createStatement();
// 4.执行语句
rs = st.executeQuery(sql);
// 5.处理结果
while (rs.next()) {
// System.out.println(rs.getObject("id") + "\t"
// + rs.getObject("name") + "\t"
// + rs.getObject("birthday") + "\t"
// + rs.getObject("money"));
}
} finally {
JdbcUtils.free(rs, st, conn);
}
}
如果要安全要用
PreparedStatement的应用
把数据交给数据库驱动来做
安全代码如下:
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 2.建立连接
conn = JdbcUtils.getConnection();
// conn = JdbcUtilsSing.getInstance().getConnection();
// 3.创建语句
String sql = "select id, name, money, birthday from user where name=?";
ps = conn.prepareStatement(sql);
ps.setString(1, name);
// 4.执行语句
rs = ps.executeQuery();
// 5.处理结果
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t"
+ rs.getString("name") + "\t" + rs.getDate("birthday")
+ "\t" + rs.getFloat("money"));
}
} finally {
JdbcUtils.free(rs, ps, conn);
}
|