1.判断数据集是否为空 results.wasNull()
2.BigDecimal 它
3。返回/设定的行数;
Statement statement = connection.createStatement();
int maxrow = statement.getMaxRows();
statement.setMaxRows(3);
4返回/设定最大字段
Statement statement = connection.createStatement();
int maxFieldSize=statement .getMaxFieldSize();
statement .setMaxFieldSize(2342);
5,查询超时
Statement statement = connection.createStatement();
int i = statement.getQueryTimeout();
statement.setQueryTimeout();
6,RESULTSET提供导航(在创建Statement时提供参数来设置conn.createStatement(ResultSet.TYPE_
FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY 其中参数还有ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.TYPE_SCROLL_SENSITIVE);
PREVIOUS
FIRST
ISFIRST
LAST
ISLAST
ABSOLUTE(INT N)移动到指定行
RELATIVE(INT N)从当前行开始移动N行
ISAFTERLAST()
ISBEFOREFIRST
7 ,提供了在修改结果被提交后仍使RESULTSET对象保持打开的能力
ResultSet.HOLD_CURSORS_OVER_COMMIT 该参数指定ResultSet对象在修改被提交时不应该被关闭
ResultSet.CLOSE_CURSORS_AT_COMMIT 该参数指定ResultSet对象在修改被提交时可以关闭
8。获取数据库的表(使用DatabaseMetaData )
Connection conn=null;ResultSet rset=null;
conn=ConnectionFactory.getConnection();
DatabaseMetaData dbmd = conn.getMetaData();
String[] types={"TABLE"};
rset = dbmd.getTable(null,"App",null,types);//第一个从给定编目中获得表,第二个给定框架中
获得表;第三个表名,第四个返回何种表的数组
Vector vtables = new Vector();
String aTable;
while(rset.next()){aTable=table.getString("TABLE_NAME");
vtables.add(aTable);
}
Iterator ite = vtables.iterator();
String se;
while(ite.hasNext()){
aTable = (String)ite.next();
ResultSet columns = dbmd.getColumns(null,null,aTable,null);
while(columns.next()){}
}
9.结果集元数据(ResultSetMetaData)
ResultSet rs = statement.executeQuery(sql);
(ResultSetMetaData)dbmd =rs.getMetaData;
10.使用行集
1,CachedRowSet一种把数据保存在内存中的断开连接的对象(优点:发送给弱小客户)
{cacheRs = new CachedRowSet();
String sql = "select * from stu";
cacheRs.setCommand(sql);
cacheRs.execute(connection); }
2,JDBCRowSet 在工作期间始终与数据源保持连接,但不行串行化
3,WebRowSet
允许写入,读出XML中的数据;
void write() throws SQLException IOException{
FileWriter fw = null;
try{ File file = new File("recording"+recordingid+"Tracks.xml");
fw = new FileWriter(file);
webrs.writeXML(fw);
}finally{fw.flush;fw.close;}
}
11,准备语句(PreparedStatement)
String sql = "insert into stu(id,name) values(?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,23);
ps.setString(2,"asfd");
ps.executeUpdate();
ps.clearParameters();
for example
public class Track{
boolean create;
boolean delete;
boolean retrieve;
boolean update;
PreparedStatement ps;
Result rs;
Vector results;
static String sqlSelect = "select "+"stu.name, "+"stu.sex,"+"score.aa";
static String sqlfrom = " from stu,score ";
static String sqlwhere = " where ";
static String whereCont="like ? and stu.id=score.id";
public Track(){}
public static String getFindSexSql()
{return sqlSelect +sqlfrom +sqlwhere+"sex "+whereCont; }
public static String getFindAgeSql()
{return sqlSelect +sqlfrom +sqlwhere+"age "+whereCont; }
public void setQueryStatement(PreparedStatement pres){
ps =pres;
create=false;
delete=false;
retrieve = (pres!=null?true:false);
update=false;
}
private boolean executeSql()throws SQLException{
if (create||delete||insert){
int result = ps.executeUpdate();
return(result==1);
}else if(retrieve){
resultSet = ps.executeQuery();
results = new Vector();
if(resultSet.next()){
Track track=new Track();
track.populate(resultSet);
results.add(track);
return(true);
}
}else{throw new SQLException("nsdfjsldfj")}
}
public Vector findByAge(String age)throw SQLException{
ps.setString(1,"%"+age+"%");
if (executeSql()){ parseResultSet();
}
return( results);
}
private void parseResultSet() throws SQLException{
try{ while(resultSet.next(){
Track track = new Track();
track.populate(resultSet);
results.add(track);
}
}finally{connfactory.close(resultSet);}
}
public void populate(ResultSet rset)throw SQLException{
setname(rset.getInt("name");
set......
}
setname....
getname
}
使用此类
try{ Connction con = Co.getconnction();
String sql= Track.getFindSexSql();
ps = con.prepareStatement(sql);
Track track = new Track();
track.setQueryStatement(ps);
String subs = "ee";
Vector v = track.findByAge(sub);
Iterator iterator = v.iterator();//Iterator 是一个循环器
while(iterator .hasNext()){
Track t = (Track)iterator.next();
checkForSubString(t.getname(),subs);
}
statci void checkForSubString(String fullString,String subString){
if (fullString.indexOf(subString)!=-1){
doSomething
}else{ doSomething}
}
}
9.native2ascii.exe来生成国际化