===========================================================
 
 
   作者: abcbbc(http://abcbbc.itpub.net)
  
 发表于:2007.05.06 12:29
  
 分类: JAVA 
  
   
 --------------------------------------------------------------- 
  
 
 
如何获得ResultSet的结构
ResultSetMetaData rsmd=rs.getMetaData();
cn=rsmd.getColumnCount();
for(int ik=1;ik<=rsmd.getColumnCount();ik++)
{
hu1.append(rsmd.getColumnName(ik)+" ");//+rsmd.getColumnTypeName(ik)+" "+rsmd.getColumnType(ik)+"
");
}
方法返回值类型 方法
boolean  | absolute(int row) JDBC 2.0。将游标移至结果集中的给定行号。  | 
void  | afterLast() JDBC 2.0。将游标移至结果集的末尾,正好在最后一行的后面。  | 
void  | beforeFirst() JDBC 2.0。将游标移至结果集的前方,正好在第一行的前面。  | 
void  | clearWarnings()  | 
void  | close() 立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待对象自动关闭时才释放它们。  | 
int  | findColumn(String columnName)  | 
boolean  | first() JDBC 2.0。将游标移至结果集中的第一行。  | 
BigDecimal  | getBigDecimal(int columnIndex)  | 
BigDecimal  | getBigDecimal(int columnIndex, int scale) 以 Java 编程语言中的 java.math.BigDecimal 对象形式获取此 ResultSet 对象当前行中指定列的值。Palm OS 的 DB2 Everyplace JDBC 驱动程序不支持此方法。不受支持。  | 
BigDecimal  | getBigDecimal(String columnName)  | 
BigDecimal  | getBigDecimal(String columnName, int scale) 以 Java 编程语言中的 java.math.BigDecimal 对象形式获取此 ResultSet 对象当前行中指定列的值。Palm OS 的 DB2 Everyplace JDBC 驱动程序不支持此方法。不受支持。  | 
Blob  | getBlob(int columnIndex)  | 
Blob  | getBlob(String columnName)  | 
boolean  | getBoolean(int columnIndex)  | 
boolean  | getBoolean(String columnName)  | 
byte  | getByte(int columnIndex)  | 
byte  | getByte(String columnName)  | 
byte[]  | getBytes(int columnIndex)  | 
byte[]  | getBytes(String columnName)  | 
int  | getConcurrency()  | 
Date  | getDate(int columnIndex)  | 
Date  | getDate(int columnIndex, Calendar cal)  | 
Date  | getDate(String columnName) 以 Java 编程语言中的 java.sql.Date 对象形式获取此 ResultSet 对象的当前行中指定列的值。  | 
double  | getDouble(int columnIndex)  | 
double  | getDouble(String columnName)  | 
float  | getFloat(int columnIndex)  | 
float  | getFloat(String columnName)  | 
int  | getInt(int columnIndex) 以 Java 编程语言中的整数形式获取此 ResultSet 对象当前行中指定列的值。  | 
int  | getInt(String columnName)  | 
long  | getLong(int columnIndex)  | 
long  | getLong(String columnName)  | 
ResultSetMetaData  | getMetaData()  | 
Object  | getObject(int columnIndex)  | 
Object  | getObject(String columnName)  | 
int  | getRow()  | 
short  | getShort(int columnIndex)  | 
short  | getShort(String columnName) 以 Java 编程语言中的 short 形式获取此 ResultSet 对象当前行中指定列的值。  | 
Statement  | getStatement()  | 
String  | getString(int columnIndex)  | 
String  | getString(String columnName) 以 Java 编程语言中的 String 形式获取此 ResultSet 对象当前行中指定列的值。  | 
Time  | getTime(int columnIndex)  | 
Time  | getTime(String columnName)  | 
Timestamp  | getTimestamp(String columnName)  | 
Timestamp  | getTimestamp(int columnIndex)  | 
int  | getType()  | 
SQLWarning  | getWarnings()  | 
boolean  | isAfterLast() JDBC 2.0。指示游标是否在结果集中的最后一行后面。  | 
boolean  | isBeforeFirst() JDBC 2.0。指示游标是否在结果集中的第一行前面。  | 
boolean  | isFirst() JDBC 2.0。指示游标是否在结果集中的第一行上。  | 
boolean  | isLast() JDBC 2.0。指示游标是否在结果集中的最后一行上。对于具有类型 TYPE_FORWARD_ONLY 的结果集,不支持此方法。  | 
boolean  | last() JDBC 2.0。将游标移至结果集中的最后一行。  | 
boolean  | next() 将游标从当前位置向下移动一行。  | 
boolean  | previous() JDBC 2.0。将游标移至结果集中的前一行。  | 
boolean  | relative(int rows) JDBC 2.0。将游标移动相对行数,正数或负数。  | 
boolean  | wasNull() 报告读取的最后一列是否具有值 SQL NULL。  | 
另外还有一个在数据库中检索的相关方法:
 
MySQL LIKE 用法:搜索匹配字段中的指定内容
转自:(http://www.5idev.com/p-php_mysql_like.shtml)
LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容,语法如下:
 
 
WHERE column LIKE pattern WHERE column NOT LIKE pattern
 
 
在 LIKE 前面加上 NOT 运算符时,表示与 LIKE 相反的意思,即选择 column 不包含 pattern 的数据记录。
LIKE 通常与通配符 % 一起使用,% 表示通配 pattern 中未出现的内容。而不加通配符 % 的 LIKE 语法,表示精确匹配,其实际效果等同于 = 等于运算符。
LIKE 使用实例
下面是一个使用 LIKE 查询数据的例子:
   user 用户表原始数据:
  
uid  | username  | password  | email  | regdate  | 
1  | admin  | b7e591c246d010bb2ccd77d52490c85e  | admin@5idev.com  | 1277992339  | 
2  | 小明  | a193686a53e4de85ee3f2ff0576adf01  | xiao@163.com  | 1278063917  | 
3  | Jack  | 0193686a35e4de85ee3f2ff0567adf490  | jack@gmail.com  | 1278061380  | 
4  | 小王  | e10adc3949ba59abbe56e057f20f883e  | 12345@163.com  | 1289632955  | 
SELECT * FROM user WHERE username LIKE '小%'
 
 
返回查询结果如下:
uid  | username  | password  | email  | regdate  | 
2  | 小明  | a193686a53e4de85ee3f2ff0576adf01  | xiao@163.com  | 1278063917  | 
4  | 小王  | e10adc3949ba59abbe56e057f20f883e  | 12345@163.com  | 1289632955  | 
该例子是找出所有 username 以“小” 开头的记录,小% 表示以“小”字符开头,而后面可以是任意字符。同样, %小 表示以“小”结尾,而 %小%则表示包含“小”这个字符(并一同包括 '%小' 与 '小%' 这两种情况)。
下面这个例子,将查询出所有 username 中字段任意位置包含 a 字符的记录:
 
 
SELECT * FROM user WHERE username LIKE '%a%'
 
 
MySQL LIKE 大小写
MySQL LIKE 匹配字符时,默认是不区分大小写的,如果需要在匹配的时候区分大小写,可以加入 BINARY 操作符:
 
 
SELECT * FROM user WHERE username LIKE BINARY '%azz%' SELECT * FROM user WHERE username LIKE BINARY '%aZZ%'
 
 
BINARY 操作符表示按照二进制进行比较,因此加上该操作符后,便可以严格区分大小写,因此以上两条 SQL 查询出来的内容是不同的。
MySQL LIKE 中文字符匹配
由于数据存储编码问题,在某些情况下,MySQL 进行 LIKE 搜索返回的数据中除了符合要求的数据外,往往还会返回许多不相干的数据。这时候也需要在 LIKE 后面加上 BINARY 操作符以进行二进制比较:
 
 
SELECT * FROM user WHERE username LIKE BINARY '%小%'
 
 
提示
当在 LIKE 匹配时加上 BINARY 操作符后,则会严格区分英文大小写。因此当检索的内容是中英文混合且需要忽略英文大小写的时候,就会遇到麻烦。为解决此问题,需要引入 MySQL 中的 UPPER() 与 CONCAT() 函数:
- UPPER():将英文字符串变大写,同UCASE()
 - CONCAT():将多个字符串连接成一个字符串
 
语法如下:
 
 
UPPER(str) CONCAT(str1,str2,...)
 
 
因此当我们要进行中英文混合匹配检索且要忽略英文大小写时,可以使用如下例所示的 SQL 语句:
 
 
SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCATt('%',UPPER('a中文b'),'%')
 
 
在该 SQL 中,将搜索的字段及检索的内容都进行大写转换后,再进行二进制匹配。
LIKE 运算符的效率
LIKE 运算符要对字段数据进行逐一扫描匹配,实际执行的效率是较差的,哪怕该字段已经建有索引(a% 这种方式会用到索引)。当数据量较大时,要尽可能的减少 LIKE 运算符的使用,也没有太多优化的余地。
 
本章节内容共分 4 部分:
- 1. MySQL Where 条件
 - 2. MySQL BETWEEN 用法
 - 3. MySQL IN 用法
 - 4. MySQL LIKE 用法:搜索匹配字段中的指定内容
 










