JDBC是我们使用JAVA程序操作数据库的工具.
JDBC由java.sql和javax.sql两个包组成, 在jdk5.0之后包含在JavaSE中, 不需要导入.
除了这两个包之外还需要导入数据库对应的驱动.
搭建环境
在数据库中创建库、表、插入数据.
建Java工程, 导入驱动
在程序中加载驱动
DriverManager.registerDriver(driver)
建立连接
Connection conn =DriverManager.getConnection(url, user, password)
创建Statement对象
Statement st =conn.createStatement()
执行SQL语句, 获取ResultSet
ResultSet rs =st.executeQuery(sql)
从Result中获取数据, 显示
rs.next()
rs.getObject(columnLabel)
释放资源
rs.close()
st.close()
conn.close()
ResultSet executeQuery(String sql)
执行查询语句, 返回结果集
intexecuteUpdate(String sql)
执行插入, 修改, 删除语句, 返回影响行数
booleanexecute(String sql)
执行任意sql语句, 返回执行是否成功
voidaddBatch( String sql )
将sql语句添加到命令列表
int[]executeBatch()
运行命令列表, 返回每一个命令影响的行数
存储TEXT
PreparedStatement ps =conn.prepareStatement("insert into clob(file) values(?)");
File file = new File("src/cn/itcast/jdbc1/clob_blob/ClobDemo.java");
Reader reader = newFileReader(file);
ps.setCharacterStream(1, reader, (int)file.length());
ps.executeUpdate()
也可以使用ps.setString()直接设置, 但如果字符串太大, 有可能超出虚拟机内存
读取TEXT
PreparedStatement ps =conn.prepareStatement("select file from clob");
ResultSet rs = ps.executeQuery();
if(rs.next()) {
Readerreader = rs.getCharacterStream(int columnIndex);
}
BLOB用来存储大段的二进制数据, 例如图片, 音频, 视频. LONGBLOB最大4G
存储BLOB
PreparedStatement ps =conn.prepareStatement("insert into big_binary(file) values(?)");
File file = new File("src/cn/itcast/jdbc1/clob_blob/IMG_0007.jpg");
InputStream in = newFileInputStream(file);
ps.setBinaryStream(1, in, (int)file.length());
ps.executeUpdate();
读取BLOB
PreparedStatement ps =conn.prepareStatement("select file from big_binary");
ResultSet rs = ps.executeQuery();
if(rs.next()) {
InputStreamin = rs.getBinaryStream(1);
2011/9/13