JDBC是我们使用JAVA程序操作数据库的工具.
Java Data BaseConnectivity java数据库连接
是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成
我们想用Java程序操作数据库, 就需要使用数据库的驱动.
由于每种数据库存储数据的方式不同, 他们所提供的数据库驱动也就不同.
如果我们学习所有数据库的驱动, 那么学习成本是很高的.
JDBC就是一套数据库驱动的规范, 由多个接口组成.
JDBC由java.sql和javax.sql两个包组成, 在jdk5.0之后包含在JavaSE中, 不需要导入.
除了这两个包之外, 我们还需要导入数据库对应的驱动.
注册驱动:
DriverManager.registerDriver(newcom.mysql.jdbc.Driver());
可以加载MySQL的驱动, 但我们不推荐这么做.
参考com.mysql.jdbc.Driver的源代码我们可以看到, 这个类的静态代码块中已经将自己注册到DriverManager了.如果我们在程序中再次注册, 相当于注册了两次.
获取连接地址:
DriverManager通过已注册的驱动获取Connection, 这个Connection是java.sql.Connection的实现类. 具体返回的是哪个类, 由驱动决定. 也就是说, 我们注册的是MySQL的驱动, 返回的就是MySQL的Connection. 查看源码.
释放资源:
在程序运行结束以后, 和数据库相关的资源不会被自动释放掉, 我们需要手动释放ResultSet, Statement, Connection尤其Connection是非常宝贵的资源, 使用结束之后应该尽早释放.
为了确保释放资源的代码一定会执行到, 我们通常将它们放在finally中
大文本和二进制:
存储文件:PreparedStatement ps = conn.prepareStatement("insert into clob(file) values(?)");
File file = new File("src/cn/itcast/jdbc1/clob_blob/ClobDemo.java");
Reader reader = new FileReader(file);
ps.setCharacterStream(1, reader,(int) file.length());
ps.executeUpdate()也可以使用ps.setString()直接设置, 但如果字符串太大, 有可能超出虚拟机内存
读取文本:PreparedStatement ps = conn.prepareStatement("select file from clob");
ResultSet rs =ps.executeQuery();
if (rs.next()) {
Reader reader = rs.getCharacterStream(intcolumnIndex);
// 这个Reader就是从数据库中读取数据的流, 操作这个流来读取数据
}
BLOB用来存储大段的二进制数据, 例如图片, 音频, 视频. LONGBLOB最大4G