1、JDBC是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现,并规定了JAVA开发人员访问数据库所使用的方法的调用规范
2、每个数据库厂商会实现Driver接口,且会调用DriverManager的静态 registerDriver方法。如:
static {
try {
DriverManager.registerDriver(new PoolingDriver());
} catch(Exception e) {
}
}
所以在Class.formName()的时候即已调用了registerDriver方法,而通过DriverManager可以得到Connection(甚至是Driver)。
从这里也可以看出:不一定要Class.forName来加载驱动,可以直接new DriverImpl()的方式。
3、由Connection可以得到Statement或者它的子类PrepareStatement,通过查询得到的结果便是ResultSet,传统的JDBC编程就是围绕这四个类展开的。
4、sql包里提供了很多基本数据类型的接口供数据库厂商实现。值得注意的是java.sql下的Date、Time分别只是日期与时间包装类,与util.Date相对应的是TimeStamp类。
5、很多项目或者个人都喜欢直接往web层返回一个 ResultSet,这种做法存在着很大的隐患,ResultSet是基于连接的,往页面上返回ResultSet就要求Connection不能关闭,而Connection不显式地关闭就只能等待自动超时。
在大并发量的情况下马上就挂了。
6、Types.java里提供了每一个数据类型代表的int值,在程序中可以直接调用。
7、笔者自己实现了工具类JdbcTemplate,创建时指定一个 DataSource就可以方便地实现数据库的增删改查。另外有若干静态方法是基于Connection的,感兴趣的读者请参考:com.upeng.commons.sql.JdbcTemplate
2、每个数据库厂商会实现Driver接口,且会调用DriverManager的静态 registerDriver方法。如:
static {
try {
DriverManager.registerDriver(new PoolingDriver());
} catch(Exception e) {
}
}
所以在Class.formName()的时候即已调用了registerDriver方法,而通过DriverManager可以得到Connection(甚至是Driver)。
从这里也可以看出:不一定要Class.forName来加载驱动,可以直接new DriverImpl()的方式。
3、由Connection可以得到Statement或者它的子类PrepareStatement,通过查询得到的结果便是ResultSet,传统的JDBC编程就是围绕这四个类展开的。
4、sql包里提供了很多基本数据类型的接口供数据库厂商实现。值得注意的是java.sql下的Date、Time分别只是日期与时间包装类,与util.Date相对应的是TimeStamp类。
5、很多项目或者个人都喜欢直接往web层返回一个 ResultSet,这种做法存在着很大的隐患,ResultSet是基于连接的,往页面上返回ResultSet就要求Connection不能关闭,而Connection不显式地关闭就只能等待自动超时。
在大并发量的情况下马上就挂了。
6、Types.java里提供了每一个数据类型代表的int值,在程序中可以直接调用。
7、笔者自己实现了工具类JdbcTemplate,创建时指定一个 DataSource就可以方便地实现数据库的增删改查。另外有若干静态方法是基于Connection的,感兴趣的读者请参考:com.upeng.commons.sql.JdbcTemplate