传智播客学习笔记4.17
复习:
创建数据库、表
对表里的数据进行操作
mysql不支持check约束
oracle中调用存储过程:exec
mysql中:call
存储过程的用途:
熟悉oracle的存储过程即可
常见函数:
聚合函数:max/count/min/avg
javascript / css
Class.forName("com.mysql.jdbc.Driver");
静态代码块:类载入内存时即执行一次
资源释放过程:
后进先出
知识点、代码质量、熟练程度
连接数据库的步骤:
1、注册驱动(只做一次)
三种方式:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());(import中会引入一个类,离开mysql驱动会无法编译)
System.setProperty("jdbc.drivers","com.mysql.jdbc.Driver");(引入一个字符串,无具体依赖)
Class.forName("com.mysql.jdbc.Driver");(推荐此种方式)(引入一个字符串,无具体依赖)
原因可查mysql源代码中driver.java(静态代码块)
2、建立连接(Connection)
jdbc:子协议:子名称//主机名:端口/数据库名?属性名=属性值&...
3、创建执行SQL的语句(Statement)
4、执行语句
5、处理执行结果(ResultSet)
6、释放资源
Connection的使用原则:尽量晚创建,早释放
jdbcutil的单例模式代码:
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class JdbcUtilsSingle {
private String url = "jdbc:mysql://localhost:3306/itcast";
private String user = "root";
private String password = "root";
// private static JdbcUtilsSingle instance = new JdbcUtilsSingle();
private static JdbcUtilsSingle instance = null;
private JdbcUtilsSingle(){
}
public static JdbcUtilsSingle getInstance(){//jdk1.5以上版本才能完全正常运行
if(instance == null){
synchronized (JdbcUtilsSingle.class) {
if(instance == null)//双重加锁
instance = new JdbcUtilsSingle();
}
}
return instance;
}
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
throw new ExceptionInInitializerError(e);
}
}
public Connection getConnection() throws SQLException{
return DriverManager.getConnection(url,user,password);
}
public void free(ResultSet rs,Statement st,Connection conn){
try{
if(rs!=null)
rs.close();
}catch (SQLException e){
e.printStackTrace();
}
finally{
try{
if(st!=null)
st.close();
}catch (SQLException e){
e.printStackTrace();
}
finally{
if(conn!=null)
try{
conn.close();
}
catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
rs中,列的索引号从1开始
CRUD:
create
read
update
delete
虽然早就知道传智的老师经验丰富,牛人众多。但是看到何老师的自我介绍,还是有点被这样的豪华阵容镇住了。何老师显然是数据库方面的权威。对ORACLE极为熟悉。讲课涉及面极广,提供的讲义内容也很全面。听他的讲解有种高屋建瓴的感觉。当然,除了具体知识,何老师对整个软件行业的介绍也同样不能错过。难得的经验之谈啊。