0
点赞
收藏
分享

微信扫一扫

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



===========================================================



作者: 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. 1. ​​MySQL Where 条件​​
  2. 2. ​​MySQL BETWEEN 用法​​
  3. 3. ​​MySQL IN 用法​​
  4. 4. MySQL LIKE 用法:搜索匹配字段中的指定内容
举报

相关推荐

0 条评论