1.MySQL分页的实现:
• Select * from table limit M,N
• M:记录开始索引位置
• N:取多少条记录。
代码案例:
package com.hbsi.jdbcdemo;
import java.sql.*;
import com.hbsi.dbUtil.DBManger;
public class demo5 {
publicstatic void main(String[] args) {
pageSelect(2,3);
}
publicstatic void pageSelect(int page,int pageSize){
Connectioncon=null;
PreparedStatementps=null;
ResultSetrs=null;
Stringsql="select * from users limit ?,?";
try{
con=DBManger.getConnection();
ps=con.prepareStatement(sql);
ps.setInt(1,(page-1)*pageSize);
ps.setInt(2,pageSize);
rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getInt("id")+"t"+rs.getString("name")+"t"+rs.getString("password"));
}
}catch(Exceptione){
e.printStackTrace();
}finally{
DBManger.dbClose(rs,ps, con);
}
}
2. 可滚动的结果集
Statementst =
connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSetrs = st.executeQuery(sql);
rs.beforeFirst(); rs.afterLast();rs.first();
rs.isFirst();rs.last();rs.isLast();
rs.absolute(9);rs.moveToInsertRow();
3. 可更新的结果集
conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs.updateString("colname", "new value");
rs.updateRow();
4.元数据- DataBaseMetaData
l 元数据:数据库、表、列的定义信息。
l Connection.getDatabaseMetaData()
l DataBaseMetaData对象
• getURL():返回一个String类对象,代表数据库的URL。
• getUserName():返回连接当前数据库管理系统用户名。
• getDatabaseProductName():返回数据库的产品名称。
• getDatabaseProductVersion():返回数据库的版本号。
• getDriverName():返回驱动程序的名称。
• getDriverVersion():返回驱动程序的版本号。
• isReadOnly():返回一个boolean值,指示数据库是否只允许读操作。
5. 元数据- ParameterMetaData
l PreparedStatement .getParameterMetaData()
• 获得代表PreparedStatement元数据的ParameterMetaData对象。
l ParameterMetaData对象
• getParameterCount()
• 获得指定参数的个数
• getParameterType(int param)
• 获得指定参数的sql类型
6. 元数据-ResultSetMetaData
l ResultSet. getMetaData()
• 获得代表ResultSet对象元数据的ResultSetMetaData对象。
l ResultSetMetaData对象
• getColumnCount()
• 返回resultset对象的列数
• getColumnName(int column)
• 获得指定列的名称
• getColumnTypeName(int column)
• 获得指定列的类型
7. 使用JDBC处理大数据
l 在实际开发中,程序需要把大文本或二进制数据保存到数据库。
l 基本概念:大数据也称之为LOB(Large Objects),LOB又分为:
• clob和blob
• clob用于存储大文本。Text
• blob用于存储二进制数据,例如图像、声音、二进制文等。
l 对MySQL而言只有blob,而没有clob,mysql存储大文本采用的是Text,Text和blob分别又分为:
• TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT
• TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB
l 对于MySQL中的Text类型,可调用如下方法设置:
PreparedStatement.setCharacterStream(index,reader, length);
//注意length长度须设置,并且设置为int型
l 对MySQL中的Text类型,可调用如下方法获取:
reader = resultSet. getCharacterStream(i);
reader = resultSet.getClob(i).getCharacterStream();
string s = resultSet.getString(i);
l 对于MySQL中的BLOB类型,可调用如下方法设置:
PreparedStatement. setBinaryStream(i, inputStream, length);
l 对MySQL中的BLOB类型,可调用如下方法获取:
InputStream in =resultSet.getBinaryStream(i);
InputStream in =resultSet.getBlob(i).getBinaryStream();8. 一个简单用户相关的数据访问层
l J2EE三层架构简介
表示层 、业务逻辑层、数据访问层,三层之间用接口隔离。
l 定义domain对象User,定义存取用户的接口
l 用JDBC实现接口
l 用配置文件(properties)和反射实现与具体类的耦合