欢迎光临
我们一直在努力

JDBC02

对数据库操作工具的基本封装

针对于查询语句的封装

public class TestQuery {
public static void main(String[] args) throws Exception {
Connection conn = DButil.getConnection();
Statement stmt = conn.createStatement();
String sql = "select * from account";
DBObject dbObject = executeQuery(sql);
ResultSet rs = dbObject.getRs();
while(rs.next()){//conn.close(); 连接关闭结果集也会关闭
// 所以应该在循环结束之后再关闭
int id = rs.getInt(1);
String name = rs.getString(2);
double balance = rs.getDouble(3);
System.out.println("id:" + id + " name:" + name + " balance:" + balance);
}
executeQuery(sql);
close(dbObject);
stmt.close();
conn.close();
rs.close();
}
public static DBObject executeQuery(String sql) throws SQLException, ClassNotFoundException {
Connection conn = DButil.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return new DBObject(conn,stmt,rs);
}
public static void close(DBObject dbObject) throws SQLException {
dbObject.getRs().close();
}
}

public class DBObject {
private Connection conn;
private Statement stmt;
private ResultSet rs;

public Connection getConn() {
return conn;
}

public void setConn(Connection conn) {
this.conn = conn;
}

public Statement getStmt() {
return stmt;
}

public void setStmt(Statement stmt) {
this.stmt = stmt;
}

public ResultSet getRs() {
return rs;
}

public void setRs(ResultSet rs) {
this.rs = rs;
}

public DBObject(Connection conn, Statement stmt, ResultSet rs) {
this.conn = conn;
this.stmt = stmt;
this.rs = rs;
}
}

sql注入攻击

PreparedStatement

是statement的子接口,不采用拼接sql的方式,而先占位问号,再采用传入参数的方式进行

public class LoginPreparedTest {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
Scanner sc = new Scanner(System.in);
Connection con = DButil.getConnection();
String sql = "select * from admin where name = ? and password = ?";
System.out.println("请输入用户名");
String name = sc.next();
System.out.println("请输入密码");
String pwd = sc.next();
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, pwd);
ResultSet rs = ps.executeQuery();
if(rs.next()) {
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
rs.close();
ps.close();
}
}

封装PrepareStatement操作

public static int executeUpdate(String sql, Object…args) throws ClassNotFoundException, SQLException {
Connection con = getConnection();
PreparedStatement ps = con.prepareStatement(sql);
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1, args[i]);
}
return ps.executeUpdate();
}

PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, name);
ps.setString(2, pwd);
// 等价于
DButil.executeUpdate(sql,name,pwd);

UUID

简介:University Unique identify:通用唯一识别码

MySQL数据库类型和java类型的对应关系

getString()是通用方法,但是最后获取的就是字符串

赞(0)
未经允许不得转载:171主机测评 » JDBC02
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址