读书人

jdbc经验-4-分页、元数据、大数据处理

发布时间: 2012-06-21 13:42:41 作者: rapoo

jdbc心得-4-分页、元数据、大数据处理

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)和反射实现与具体类的耦合

读书人网 >其他数据库

热点推荐