Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
3e65f279
提交
3e65f279
authored
7 年前
作者:
Noel Grandin
提交者:
GitHub
7 年前
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #597 from marschall/getObject-more-types
Support more types in getObject
上级
3e07806f
adea42dc
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
320 行增加
和
2 行删除
+320
-2
JdbcResultSet.java
h2/src/main/org/h2/jdbc/JdbcResultSet.java
+15
-0
TestResultSet.java
h2/src/test/org/h2/test/jdbc/TestResultSet.java
+305
-2
没有找到文件。
h2/src/main/org/h2/jdbc/JdbcResultSet.java
浏览文件 @
3e65f279
...
...
@@ -8,6 +8,7 @@ package org.h2.jdbc;
import
java.io.InputStream
;
import
java.io.Reader
;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.net.URL
;
import
java.sql.Array
;
import
java.sql.Blob
;
...
...
@@ -3771,6 +3772,8 @@ public class JdbcResultSet extends TraceObject implements ResultSet, JdbcResultS
}
if
(
type
==
BigDecimal
.
class
)
{
return
type
.
cast
(
value
.
getBigDecimal
());
}
else
if
(
type
==
BigInteger
.
class
)
{
return
type
.
cast
(
BigInteger
.
valueOf
(
value
.
getLong
()));
}
else
if
(
type
==
String
.
class
)
{
return
type
.
cast
(
value
.
getString
());
}
else
if
(
type
==
Boolean
.
class
)
{
...
...
@@ -3793,6 +3796,12 @@ public class JdbcResultSet extends TraceObject implements ResultSet, JdbcResultS
return
type
.
cast
(
value
.
getTime
());
}
else
if
(
type
==
Timestamp
.
class
)
{
return
type
.
cast
(
value
.
getTimestamp
());
}
else
if
(
type
==
java
.
util
.
Date
.
class
)
{
return
type
.
cast
(
new
java
.
util
.
Date
(
value
.
getTimestamp
().
getTime
()));
}
else
if
(
type
==
Calendar
.
class
)
{
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
value
.
getTimestamp
());
return
type
.
cast
(
calendar
);
}
else
if
(
type
==
UUID
.
class
)
{
return
type
.
cast
(
value
.
getObject
());
}
else
if
(
type
==
byte
[].
class
)
{
...
...
@@ -3800,6 +3809,12 @@ public class JdbcResultSet extends TraceObject implements ResultSet, JdbcResultS
}
else
if
(
type
==
java
.
sql
.
Array
.
class
)
{
int
id
=
getNextId
(
TraceObject
.
ARRAY
);
return
type
.
cast
(
value
==
ValueNull
.
INSTANCE
?
null
:
new
JdbcArray
(
conn
,
value
,
id
));
}
else
if
(
type
==
Blob
.
class
)
{
int
id
=
getNextId
(
TraceObject
.
ARRAY
);
return
type
.
cast
(
value
==
ValueNull
.
INSTANCE
?
null
:
new
JdbcBlob
(
conn
,
value
,
id
));
}
else
if
(
type
==
Clob
.
class
)
{
int
id
=
getNextId
(
TraceObject
.
ARRAY
);
return
type
.
cast
(
value
==
ValueNull
.
INSTANCE
?
null
:
new
JdbcClob
(
conn
,
value
,
id
));
}
else
if
(
type
==
TimestampWithTimeZone
.
class
)
{
return
type
.
cast
(
value
.
getObject
());
}
else
if
(
DataType
.
isGeometryClass
(
type
))
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/jdbc/TestResultSet.java
浏览文件 @
3e65f279
...
...
@@ -14,6 +14,7 @@ import java.io.Writer;
import
java.math.BigDecimal
;
import
java.math.BigInteger
;
import
java.sql.Array
;
import
java.sql.Blob
;
import
java.sql.Clob
;
import
java.sql.Connection
;
import
java.sql.DatabaseMetaData
;
...
...
@@ -88,6 +89,8 @@ public class TestResultSet extends TestBase {
assertTrue
(
stat
.
getMaxRows
()
==
6
);
testInt
();
testSmallInt
();
testBigInt
();
testVarchar
();
testDecimal
();
testDoubleFloat
();
...
...
@@ -741,6 +744,260 @@ public class TestResultSet extends TestBase {
stat
.
setMaxRows
(
0
);
}
private
void
testSmallInt
()
throws
SQLException
{
trace
(
"Test SMALLINT"
);
ResultSet
rs
;
Object
o
;
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY,VALUE SMALLINT)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(1,-1)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(2,0)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(3,1)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(4,"
+
Short
.
MAX_VALUE
+
")"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(5,"
+
Short
.
MIN_VALUE
+
")"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(6,NULL)"
);
// MySQL compatibility (is this required?)
// rs=stat.executeQuery("SELECT * FROM TEST T ORDER BY ID");
// check(rs.findColumn("T.ID"), 1);
// check(rs.findColumn("T.NAME"), 2);
rs
=
stat
.
executeQuery
(
"SELECT *, NULL AS N FROM TEST ORDER BY ID"
);
// MySQL compatibility
assertEquals
(
1
,
rs
.
findColumn
(
"TEST.ID"
));
assertEquals
(
2
,
rs
.
findColumn
(
"TEST.VALUE"
));
assertTrue
(
rs
.
getRow
()
==
0
);
assertResultSetMeta
(
rs
,
3
,
new
String
[]
{
"ID"
,
"VALUE"
,
"N"
},
new
int
[]
{
Types
.
INTEGER
,
Types
.
SMALLINT
,
Types
.
NULL
},
new
int
[]
{
10
,
5
,
1
},
new
int
[]
{
0
,
0
,
0
});
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
1
);
assertEquals
(
2
,
rs
.
findColumn
(
"VALUE"
));
assertEquals
(
2
,
rs
.
findColumn
(
"value"
));
assertEquals
(
2
,
rs
.
findColumn
(
"Value"
));
assertEquals
(
2
,
rs
.
findColumn
(
"Value"
));
assertEquals
(
1
,
rs
.
findColumn
(
"ID"
));
assertEquals
(
1
,
rs
.
findColumn
(
"id"
));
assertEquals
(
1
,
rs
.
findColumn
(
"Id"
));
assertEquals
(
1
,
rs
.
findColumn
(
"iD"
));
assertTrue
(
rs
.
getShort
(
2
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"VALUE"
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"value"
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"Value"
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
"Value"
).
equals
(
"-1"
)
&&
!
rs
.
wasNull
());
o
=
rs
.
getObject
(
"value"
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Short
);
assertTrue
(((
Short
)
o
).
shortValue
()
==
-
1
);
o
=
rs
.
getObject
(
"value"
,
Short
.
class
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Short
);
assertTrue
(((
Short
)
o
).
shortValue
()
==
-
1
);
o
=
rs
.
getObject
(
2
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Short
);
assertTrue
(((
Short
)
o
).
shortValue
()
==
-
1
);
o
=
rs
.
getObject
(
2
,
Short
.
class
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Short
);
assertTrue
(((
Short
)
o
).
shortValue
()
==
-
1
);
assertTrue
(
rs
.
getBoolean
(
"Value"
));
assertTrue
(
rs
.
getByte
(
"Value"
)
==
(
byte
)
-
1
);
assertTrue
(
rs
.
getInt
(
"Value"
)
==
-
1
);
assertTrue
(
rs
.
getLong
(
"Value"
)
==
-
1
);
assertTrue
(
rs
.
getFloat
(
"Value"
)
==
-
1.0
);
assertTrue
(
rs
.
getDouble
(
"Value"
)
==
-
1.0
);
assertTrue
(
rs
.
getString
(
"Value"
).
equals
(
"-1"
)
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"ID"
)
==
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"id"
)
==
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"Id"
)
==
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
1
)
==
1
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
2
);
assertTrue
(
rs
.
getShort
(
2
)
==
0
&&
!
rs
.
wasNull
());
assertTrue
(!
rs
.
getBoolean
(
2
));
assertTrue
(
rs
.
getByte
(
2
)
==
0
);
assertTrue
(
rs
.
getInt
(
2
)
==
0
);
assertTrue
(
rs
.
getLong
(
2
)
==
0
);
assertTrue
(
rs
.
getFloat
(
2
)
==
0.0
);
assertTrue
(
rs
.
getDouble
(
2
)
==
0.0
);
assertTrue
(
rs
.
getString
(
2
).
equals
(
"0"
)
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
1
)
==
2
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
3
);
assertTrue
(
rs
.
getShort
(
"ID"
)
==
3
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"VALUE"
)
==
1
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
4
);
assertTrue
(
rs
.
getShort
(
"ID"
)
==
4
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"VALUE"
)
==
Short
.
MAX_VALUE
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
5
);
assertTrue
(
rs
.
getShort
(
"id"
)
==
5
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"value"
)
==
Short
.
MIN_VALUE
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
1
).
equals
(
"5"
)
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
6
);
assertTrue
(
rs
.
getShort
(
"id"
)
==
6
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
"value"
)
==
0
&&
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
2
)
==
0
&&
rs
.
wasNull
());
assertTrue
(
rs
.
getShort
(
1
)
==
6
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
1
).
equals
(
"6"
)
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
2
)
==
null
&&
rs
.
wasNull
());
o
=
rs
.
getObject
(
2
);
assertTrue
(
o
==
null
);
assertTrue
(
rs
.
wasNull
());
o
=
rs
.
getObject
(
2
,
Short
.
class
);
assertTrue
(
o
==
null
);
assertTrue
(
rs
.
wasNull
());
assertFalse
(
rs
.
next
());
assertEquals
(
0
,
rs
.
getRow
());
stat
.
execute
(
"DROP TABLE TEST"
);
stat
.
setMaxRows
(
0
);
}
private
void
testBigInt
()
throws
SQLException
{
trace
(
"Test SMALLINT"
);
ResultSet
rs
;
Object
o
;
stat
.
execute
(
"CREATE TABLE TEST(ID INT PRIMARY KEY,VALUE BIGINT)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(1,-1)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(2,0)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(3,1)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(4,"
+
Long
.
MAX_VALUE
+
")"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(5,"
+
Long
.
MIN_VALUE
+
")"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(6,NULL)"
);
// MySQL compatibility (is this required?)
// rs=stat.executeQuery("SELECT * FROM TEST T ORDER BY ID");
// check(rs.findColumn("T.ID"), 1);
// check(rs.findColumn("T.NAME"), 2);
rs
=
stat
.
executeQuery
(
"SELECT *, NULL AS N FROM TEST ORDER BY ID"
);
// MySQL compatibility
assertEquals
(
1
,
rs
.
findColumn
(
"TEST.ID"
));
assertEquals
(
2
,
rs
.
findColumn
(
"TEST.VALUE"
));
assertTrue
(
rs
.
getRow
()
==
0
);
assertResultSetMeta
(
rs
,
3
,
new
String
[]
{
"ID"
,
"VALUE"
,
"N"
},
new
int
[]
{
Types
.
INTEGER
,
Types
.
BIGINT
,
Types
.
NULL
},
new
int
[]
{
10
,
19
,
1
},
new
int
[]
{
0
,
0
,
0
});
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
1
);
assertEquals
(
2
,
rs
.
findColumn
(
"VALUE"
));
assertEquals
(
2
,
rs
.
findColumn
(
"value"
));
assertEquals
(
2
,
rs
.
findColumn
(
"Value"
));
assertEquals
(
2
,
rs
.
findColumn
(
"Value"
));
assertEquals
(
1
,
rs
.
findColumn
(
"ID"
));
assertEquals
(
1
,
rs
.
findColumn
(
"id"
));
assertEquals
(
1
,
rs
.
findColumn
(
"Id"
));
assertEquals
(
1
,
rs
.
findColumn
(
"iD"
));
assertTrue
(
rs
.
getLong
(
2
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"VALUE"
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"value"
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"Value"
)
==
-
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
"Value"
).
equals
(
"-1"
)
&&
!
rs
.
wasNull
());
o
=
rs
.
getObject
(
"value"
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Long
);
assertTrue
(((
Long
)
o
).
longValue
()
==
-
1
);
o
=
rs
.
getObject
(
"value"
,
Long
.
class
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Long
);
assertTrue
(((
Long
)
o
).
longValue
()
==
-
1
);
o
=
rs
.
getObject
(
"value"
,
BigInteger
.
class
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
BigInteger
);
assertTrue
(((
BigInteger
)
o
).
longValue
()
==
-
1
);
o
=
rs
.
getObject
(
2
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Long
);
assertTrue
(((
Long
)
o
).
longValue
()
==
-
1
);
o
=
rs
.
getObject
(
2
,
Long
.
class
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
Long
);
assertTrue
(((
Long
)
o
).
longValue
()
==
-
1
);
o
=
rs
.
getObject
(
2
,
BigInteger
.
class
);
trace
(
o
.
getClass
().
getName
());
assertTrue
(
o
instanceof
BigInteger
);
assertTrue
(((
BigInteger
)
o
).
longValue
()
==
-
1
);
assertTrue
(
rs
.
getBoolean
(
"Value"
));
assertTrue
(
rs
.
getByte
(
"Value"
)
==
(
byte
)
-
1
);
assertTrue
(
rs
.
getShort
(
"Value"
)
==
-
1
);
assertTrue
(
rs
.
getInt
(
"Value"
)
==
-
1
);
assertTrue
(
rs
.
getFloat
(
"Value"
)
==
-
1.0
);
assertTrue
(
rs
.
getDouble
(
"Value"
)
==
-
1.0
);
assertTrue
(
rs
.
getString
(
"Value"
).
equals
(
"-1"
)
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"ID"
)
==
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"id"
)
==
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"Id"
)
==
1
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
1
)
==
1
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
2
);
assertTrue
(
rs
.
getLong
(
2
)
==
0
&&
!
rs
.
wasNull
());
assertTrue
(!
rs
.
getBoolean
(
2
));
assertTrue
(
rs
.
getByte
(
2
)
==
0
);
assertTrue
(
rs
.
getShort
(
2
)
==
0
);
assertTrue
(
rs
.
getInt
(
2
)
==
0
);
assertTrue
(
rs
.
getFloat
(
2
)
==
0.0
);
assertTrue
(
rs
.
getDouble
(
2
)
==
0.0
);
assertTrue
(
rs
.
getString
(
2
).
equals
(
"0"
)
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
1
)
==
2
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
3
);
assertTrue
(
rs
.
getLong
(
"ID"
)
==
3
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"VALUE"
)
==
1
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
4
);
assertTrue
(
rs
.
getLong
(
"ID"
)
==
4
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"VALUE"
)
==
Long
.
MAX_VALUE
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
5
);
assertTrue
(
rs
.
getLong
(
"id"
)
==
5
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"value"
)
==
Long
.
MIN_VALUE
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
1
).
equals
(
"5"
)
&&
!
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getRow
()
==
6
);
assertTrue
(
rs
.
getLong
(
"id"
)
==
6
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
"value"
)
==
0
&&
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
2
)
==
0
&&
rs
.
wasNull
());
assertTrue
(
rs
.
getLong
(
1
)
==
6
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
1
).
equals
(
"6"
)
&&
!
rs
.
wasNull
());
assertTrue
(
rs
.
getString
(
2
)
==
null
&&
rs
.
wasNull
());
o
=
rs
.
getObject
(
2
);
assertTrue
(
o
==
null
);
assertTrue
(
rs
.
wasNull
());
o
=
rs
.
getObject
(
2
,
Long
.
class
);
assertTrue
(
o
==
null
);
assertTrue
(
rs
.
wasNull
());
assertFalse
(
rs
.
next
());
assertEquals
(
0
,
rs
.
getRow
());
stat
.
execute
(
"DROP TABLE TEST"
);
stat
.
setMaxRows
(
0
);
}
private
void
testVarchar
()
throws
SQLException
{
trace
(
"Test VARCHAR"
);
ResultSet
rs
;
...
...
@@ -1043,6 +1300,14 @@ public class TestResultSet extends TestBase {
assertTrue
(((
java
.
sql
.
Timestamp
)
o
).
equals
(
java
.
sql
.
Timestamp
.
valueOf
(
"2011-11-11 00:00:00.0"
)));
assertFalse
(
rs
.
wasNull
());
o
=
rs
.
getObject
(
2
,
java
.
util
.
Date
.
class
);
assertTrue
(
o
.
getClass
()
==
java
.
util
.
Date
.
class
);
assertEquals
(((
java
.
util
.
Date
)
o
).
getTime
(),
java
.
sql
.
Timestamp
.
valueOf
(
"2011-11-11 00:00:00.0"
).
getTime
());
o
=
rs
.
getObject
(
2
,
Calendar
.
class
);
assertTrue
(
o
instanceof
Calendar
);
assertEquals
(((
Calendar
)
o
).
getTime
().
getTime
(),
java
.
sql
.
Timestamp
.
valueOf
(
"2011-11-11 00:00:00.0"
).
getTime
());
rs
.
next
();
date
=
rs
.
getDate
(
"VALUE"
);
...
...
@@ -1057,6 +1322,7 @@ public class TestResultSet extends TestBase {
assertEquals
(
"02:02:02"
,
time
.
toString
());
assertEquals
(
"2002-02-02 02:02:02.0"
,
ts
.
toString
());
rs
.
next
();
assertEquals
(
"1800-01-01"
,
rs
.
getDate
(
"value"
).
toString
());
if
(
LocalDateTimeUtils
.
isJava8DateApiPresent
())
{
assertEquals
(
"1800-01-01"
,
rs
.
getObject
(
"value"
,
...
...
@@ -1073,6 +1339,7 @@ public class TestResultSet extends TestBase {
LocalDateTimeUtils
.
getLocalDateTimeClass
()).
toString
());
}
rs
.
next
();
assertEquals
(
"9999-12-31"
,
rs
.
getDate
(
"Value"
).
toString
());
if
(
LocalDateTimeUtils
.
isJava8DateApiPresent
())
{
assertEquals
(
"9999-12-31"
,
rs
.
getObject
(
"Value"
,
...
...
@@ -1089,6 +1356,7 @@ public class TestResultSet extends TestBase {
LocalDateTimeUtils
.
getLocalDateTimeClass
()).
toString
());
}
rs
.
next
();
assertTrue
(
rs
.
getDate
(
"Value"
)
==
null
&&
rs
.
wasNull
());
assertTrue
(
rs
.
getTime
(
"vALUe"
)
==
null
&&
rs
.
wasNull
());
assertTrue
(
rs
.
getTimestamp
(
2
)
==
null
&&
rs
.
wasNull
());
...
...
@@ -1102,6 +1370,7 @@ public class TestResultSet extends TestBase {
"TIME '14:15:16', "
+
"TIMESTAMP '2007-08-09 10:11:12.141516171' TS FROM TEST"
);
rs
.
next
();
date
=
(
Date
)
rs
.
getObject
(
1
);
time
=
(
Time
)
rs
.
getObject
(
2
);
ts
=
(
Timestamp
)
rs
.
getObject
(
3
);
...
...
@@ -1256,12 +1525,14 @@ public class TestResultSet extends TestBase {
stat
.
execute
(
"INSERT INTO TEST VALUES(3,X'00')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(4,X'ffffff')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(5,X'0bcec1')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(6,NULL)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(6,X'03030303')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(7,NULL)"
);
rs
=
stat
.
executeQuery
(
"SELECT * FROM TEST ORDER BY ID"
);
assertResultSetMeta
(
rs
,
2
,
new
String
[]
{
"ID"
,
"VALUE"
},
new
int
[]
{
Types
.
INTEGER
,
Types
.
BLOB
},
new
int
[]
{
10
,
Integer
.
MAX_VALUE
},
new
int
[]
{
0
,
0
});
rs
.
next
();
assertEqualsWithNull
(
new
byte
[]
{
(
byte
)
0x01
,
(
byte
)
0x01
,
(
byte
)
0x01
,
(
byte
)
0x01
},
rs
.
getBytes
(
2
));
...
...
@@ -1271,6 +1542,7 @@ public class TestResultSet extends TestBase {
rs
.
getObject
(
2
,
byte
[].
class
));
assertTrue
(!
rs
.
wasNull
());
rs
.
next
();
assertEqualsWithNull
(
new
byte
[]
{
(
byte
)
0x02
,
(
byte
)
0x02
,
(
byte
)
0x02
,
(
byte
)
0x02
},
rs
.
getBytes
(
"value"
));
...
...
@@ -1280,19 +1552,34 @@ public class TestResultSet extends TestBase {
rs
.
getObject
(
"value"
,
byte
[].
class
));
assertTrue
(!
rs
.
wasNull
());
rs
.
next
();
assertEqualsWithNull
(
new
byte
[]
{
(
byte
)
0x00
},
readAllBytes
(
rs
.
getBinaryStream
(
2
)));
assertTrue
(!
rs
.
wasNull
());
rs
.
next
();
assertEqualsWithNull
(
new
byte
[]
{
(
byte
)
0xff
,
(
byte
)
0xff
,
(
byte
)
0xff
},
readAllBytes
(
rs
.
getBinaryStream
(
"VaLuE"
)));
assertTrue
(!
rs
.
wasNull
());
rs
.
next
();
InputStream
in
=
rs
.
getBinaryStream
(
"value"
);
byte
[]
b
=
readAllBytes
(
in
);
assertEqualsWithNull
(
new
byte
[]
{
(
byte
)
0x0b
,
(
byte
)
0xce
,
(
byte
)
0xc1
},
b
);
assertTrue
(!
rs
.
wasNull
());
rs
.
next
();
Blob
blob
=
rs
.
getObject
(
"value"
,
Blob
.
class
);
try
{
assertTrue
(
blob
!=
null
);
assertEqualsWithNull
(
new
byte
[]
{
(
byte
)
0x03
,
(
byte
)
0x03
,
(
byte
)
0x03
,
(
byte
)
0x03
},
readAllBytes
(
blob
.
getBinaryStream
()));
assertTrue
(!
rs
.
wasNull
());
}
finally
{
blob
.
free
();
}
rs
.
next
();
assertEqualsWithNull
(
null
,
readAllBytes
(
rs
.
getBinaryStream
(
"VaLuE"
)));
assertTrue
(
rs
.
wasNull
());
assertTrue
(!
rs
.
next
());
...
...
@@ -1311,8 +1598,9 @@ public class TestResultSet extends TestBase {
stat
.
execute
(
"INSERT INTO TEST VALUES(3,'World!')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(4,'Hallo')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(5,'Welt!')"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(6,
NULL
)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(6,
'Test2'
)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(7,NULL)"
);
stat
.
execute
(
"INSERT INTO TEST VALUES(8,NULL)"
);
rs
=
stat
.
executeQuery
(
"SELECT * FROM TEST ORDER BY ID"
);
assertResultSetMeta
(
rs
,
2
,
new
String
[]
{
"ID"
,
"VALUE"
},
new
int
[]
{
Types
.
INTEGER
,
Types
.
CLOB
},
new
int
[]
{
...
...
@@ -1345,19 +1633,34 @@ public class TestResultSet extends TestBase {
trace
(
string
);
assertTrue
(
string
!=
null
&&
string
.
equals
(
"World!"
));
rs
.
next
();
string
=
readString
(
rs
.
getCharacterStream
(
2
));
assertTrue
(!
rs
.
wasNull
());
trace
(
string
);
assertTrue
(
string
!=
null
&&
string
.
equals
(
"Hallo"
));
rs
.
next
();
string
=
readString
(
rs
.
getCharacterStream
(
"value"
));
assertTrue
(!
rs
.
wasNull
());
trace
(
string
);
assertTrue
(
string
!=
null
&&
string
.
equals
(
"Welt!"
));
rs
.
next
();
Clob
clob
=
rs
.
getObject
(
"value"
,
Clob
.
class
);
try
{
assertTrue
(
clob
!=
null
);
string
=
readString
(
clob
.
getCharacterStream
());
assertTrue
(
string
!=
null
&&
string
.
equals
(
"Test2"
));
assertTrue
(!
rs
.
wasNull
());
}
finally
{
clob
.
free
();
}
rs
.
next
();
assertTrue
(
rs
.
getCharacterStream
(
2
)
==
null
);
assertTrue
(
rs
.
wasNull
());
rs
.
next
();
assertTrue
(
rs
.
getAsciiStream
(
"Value"
)
==
null
);
assertTrue
(
rs
.
wasNull
());
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论