java数据库字段ResultSet解析(转)

来源:互联网 发布:阿里云配置tomcat教程 编辑:程序博客网 时间:2024/06/13 20:22

先推荐一个MySql的官方中文参考手册:https://dev.mysql.com/doc/refman/5.1/zh/index.html
转自:(http://blog.csdn.net/shufangjia/article/details/3597462)
ResultSet的方法和结构分析
===========================================================
作者: abcbbc(http://abcbbc.itpub.net)
发表于:2007.05.06 12:29
分类: JAVA
出处:http://abcbbc.itpub.net/post/31127/285985
---------------------------------------------------------------

如何获得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() 清除此 ResultSet 对象上报告的所有警告。 void close() 立即释放此 ResultSet 对象的数据库和 JDBC 资源,而不是等待对象自动关闭时才释放它们。 int findColumn(String columnName) 将给定 ResultSet 列名映射至其 ResultSet 列索引。 boolean first() JDBC 2.0。将游标移至结果集中的第一行。 BigDecimal getBigDecimal(int columnIndex) JDBC 2.0。以具有全部精度的 java.math.BigDecimal 对象形式获取当前行中某个列的值。Palm OS 的 DB2 Everyplace JDBC 驱动程序不支持此方法。 BigDecimal getBigDecimal(int columnIndex, int scale) 以 Java 编程语言中的 java.math.BigDecimal 对象形式获取此 ResultSet 对象当前行中指定列的值。Palm OS 的 DB2 Everyplace JDBC 驱动程序不支持此方法。不受支持。 BigDecimal getBigDecimal(String columnName) JDBC 2.0。以具有全部精度的 java.math.BigDecimal 对象形式获取当前行中某个列的值。Palm OS 的 DB2 Everyplace JDBC 驱动程序不支持此方法。 BigDecimal getBigDecimal(String columnName, int scale) 以 Java 编程语言中的 java.math.BigDecimal 对象形式获取此 ResultSet 对象当前行中指定列的值。Palm OS 的 DB2 Everyplace JDBC 驱动程序不支持此方法。不受支持。 Blob getBlob(int columnIndex) JDBC 2.0。获取此 ResultSet 对象的当前行中的 BLOB 值。 Blob getBlob(String columnName) JDBC 2.0。获取此 ResultSet 对象的当前行中的 BLOB 值。 boolean getBoolean(int columnIndex) 以 Java 布尔值形式获取当前行中某列的值。 boolean getBoolean(String columnName) 以 Java 布尔值形式获取当前行中某列的值。 byte getByte(int columnIndex) 以 Java 编程语言中的字节形式获取此 ResultSet 对象当前行中指定列的值。 byte getByte(String columnName) 以 Java 编程语言中的字节形式获取此 ResultSet 对象当前行中指定列的值。 byte[] getBytes(int columnIndex) 以 Java 编程语言中的字节数组形式获取此 ResultSet 对象当前行中指定列的值。 byte[] getBytes(String columnName) 以 Java 编程语言中的字节数组形式获取此 ResultSet 对象当前行中指定列的值。 int getConcurrency() JDBC 2.0。返回结果集的并行性方式。 Date getDate(int columnIndex) 以 Java 编程语言中的 java.sql.Date 对象形式获取此 ResultSet 对象当前行中指定列的值。 Date getDate(int columnIndex, Calendar cal) 以 Java 编程语言中的 java.sql.Date 对象形式返回此 ResultSet 对象的当前行中指定列的值。 Date getDate(String columnName) 以 Java 编程语言中的 java.sql.Date 对象形式获取此 ResultSet 对象的当前行中指定列的值。 double getDouble(int columnIndex) 以 Java 双精度形式获取当前行中某列的值。 double getDouble(String columnName) 以 Java 双精度形式获取当前行中某列的值。 float getFloat(int columnIndex) 以 Java 浮点形式获取当前行中某列的值。 float getFloat(String columnName) 以 Java 浮点形式获取当前行中某列的值。 int getInt(int columnIndex) 以 Java 编程语言中的整数形式获取此 ResultSet 对象当前行中指定列的值。 int getInt(String columnName) 以 Java 编程语言中的整数形式获取此 ResultSet 对象的当前行中指定列的值。 long getLong(int columnIndex) 以 Java 长整型形式获取当前行中某列的值。 long getLong(String columnName) 以 Java 长整型形式获取当前行中某列的值。 ResultSetMetaData getMetaData() 检索此 ResultSet 对象的列的数目、类型和属性。 Object getObject(int columnIndex) 以 Java 对象形式获取当前行中某列的值。 Object getObject(String columnName) 以 Java 对象形式获取当前行中某列的值。 int getRow() JDBC 2.0。检索当前行号。 short getShort(int columnIndex) 以 Java 编程语言中的 short 形式获取此 ResultSet 对象当前行中指定列的值。 short getShort(String columnName) 以 Java 编程语言中的 short 形式获取此 ResultSet 对象当前行中指定列的值。 Statement getStatement() JDBC 2.0。返回产生此 ResultSet 对象的"语句"。 String getString(int columnIndex) 以 Java 编程语言中的 String 形式获取此 ResultSet 对象当前行中指定列的值。 String getString(String columnName) 以 Java 编程语言中的 String 形式获取此 ResultSet 对象当前行中指定列的值。 Time getTime(int columnIndex) 以 Java 编程语言中的 java.sql.Time 对象形式获取此 ResultSet 对象的当前行中指定列的值。 Time getTime(String columnName) 以 Java 编程语言中的 java.sql.Date 对象形式获取此 ResultSet 对象的当前行中指定列的值。 Timestamp getTimestamp(String columnName) 以 Java 编程语言中的 java.sql.Timestamp 对象形式获取此 ResultSet 对象的当前行中指定列的值。 Timestamp getTimestamp(int columnIndex) 以 Java 编程语言中的 java.sql.Timestamp 对象形式获取此 ResultSet 对象的当前行中指定列的值。 int getType() JDBC 2.0。返回此结果集的类型。 SQLWarning getWarnings() 返回此 ResultSet 上的调用报告的首次警告。 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 patternWHERE column NOT LIKE pattern

在 LIKE 前面加上 NOT 运算符时,表示与 LIKE 相反的意思,即选择 column 不包含 pattern 的数据记录。

LIKE 通常与通配符 % 一起使用,% 表示通配 pattern 中未出现的内容。而不加通配符 % 的 LIKE 语法,表示精确匹配,其实际效果等同于 = 等于运算符。

LIKE 使用实例

下面是一个使用 LIKE 查询数据的例子:

user 用户表原始数据:uidusernamepasswordemailregdate1adminb7e591c246d010bb2ccd77d52490c85eadmin@5idev.com12779923392小明a193686a53e4de85ee3f2ff0576adf01xiao@163.com12780639173Jack0193686a35e4de85ee3f2ff0567adf490jack@gmail.com12780613804小王e10adc3949ba59abbe56e057f20f883e12345@163.com1289632955
SELECT * FROM user WHERE username LIKE '小%'

返回查询结果如下:

uidusernamepasswordemailregdate2小明a193686a53e4de85ee3f2ff0576adf01xiao@163.com12780639174小王e10adc3949ba59abbe56e057f20f883e12345@163.com1289632955

该例子是找出所有 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. 1. MySQL Where 条件
  2. 2. MySQL BETWEEN 用法
  3. 3. MySQL IN 用法
  4. 4. MySQL LIKE 用法:搜索匹配字段中的指定内容