本帖最后由 cyahua 于 2018-5-21 14:54 编辑
JDBC 学习笔记 相关API
DiverManager
注册驱动
获得连接
static Connection getConnection(String url, String user, String password) url格式:数据库协议://IP地址:端口号/数据库(数据库可以不写); 例子:jdbc:mysql://localhost:3306/web_test3
Connection
创建执行SQL语句的对象
Statement createStatement():创建Statement对象,执行SQL语句(存在SQL注入漏洞) CallaleStatement prepareCall(String sql):创建CallableStatement对象调用数据库存储过程 PreparedStatement prepareStatement(String sql):创建PreparedStatement对象将参数化的SQL语句发送到数据库(解决了SQL注入漏洞)
管理事务
void setAutoCommit(boolean autoCommit):将此链接的自动提交模式设置为给定状态 void commit:提交,并释放此Connection对象当前持有的所有数据库锁 void rollback():回滚,并释放此Connection对象当前持有的所有数据库锁
Statement
ResultSet
JDBC开发步骤
step1:注册驱动:Class.forName()
step2:获得连接:Connection conn = DriverManger.getConnection(url,username,password)
step3:编写SQL语句,String sql ="",值的地方用占位符?代替
step4:预编译sql并且获得可执行sql语句的对象PreparedStatement ps = conn.prepareStatemet(String sql)
step5:为sql语句设置值,用值代替sql语句中的? ps.setXXX(int n,值) n:代表第几个问号的意思,从1开始
step6:执行sql语句
如果是查询:ResutSet rs = ps.executeQuery();//获得结果集
如果是增删改:int num = ps.executeUpdate() ;// num 代表影响的行数
step7:释放资源属性PropertiesProperties prop = new Properties();
prop.load(new FileInputeStream(String path或File对象));
prop.getProperty(String key);批处理
String sql = "insert into user values (null,?)";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
for(int i=1;i<=10000;i++){
pstmt.setString(1, "name"+i);
// 添加到批处理
pstmt.addBatch();//注意内存溢出
if(i % 1000 == 0){
// 执行批处理:
pstmt.executeBatch();
// 清空批处理:
pstmt.clearBatch();
}
}事务连接池增强类中方法的方式java的23种设计模式 DBUtilsQueryRunner
构造方法:
方法:
int update(String sql. Object...parsms) int update(Connection conn, String sql, Object... params) query(String sql, ResultSetHandler<T> rsh, Object... params) query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params)
工具类编写原则:把相同或相似的代码抽取出来 ResultHandler ResultHandler实现类
|
|