jdbc-helper 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +11 -0
- data/lib/jdbc-helper/connection/prepared_statement.rb +12 -7
- data/test/test_jdbc-helper.rb +29 -3
- metadata +14 -11
data/README.rdoc
CHANGED
@@ -56,6 +56,17 @@ Add JDBC driver of the DBMS you're willing to use to your CLASSPATH
|
|
56
56
|
# ...
|
57
57
|
end
|
58
58
|
end
|
59
|
+
|
60
|
+
# `enumerate' method returns an Enumerable object if block is not given.
|
61
|
+
# When the result set of the query is expected to be large and you wish to
|
62
|
+
# chain enumerators, `enumerate' is much preferred over `query'. (which returns the
|
63
|
+
# array of the entire rows)
|
64
|
+
conn.enumerate("SELECT * FROM LARGE_T").each_slice(1000) do | slice |
|
65
|
+
slice.each do | row |
|
66
|
+
# ...
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
59
70
|
== Updating database table
|
60
71
|
del_count = conn.update("DELETE FROM T")
|
61
72
|
|
@@ -105,8 +105,9 @@ private
|
|
105
105
|
@pstmt.set_null(idx += 1, java.sql.Types::NULL)
|
106
106
|
elsif setter = SETTER_MAP[param.class.to_s]
|
107
107
|
if setter == :setBinaryStream
|
108
|
-
@pstmt.send(setter, idx += 1,
|
109
|
-
|
108
|
+
@pstmt.send(setter, idx += 1, param.getBinaryStream, param.length)
|
109
|
+
elsif setter == :setTimestamp && param.is_a?(Time)
|
110
|
+
@pstmt.send(setter, idx += 1, java.sql.Timestamp.new(param.to_i * 1000))
|
110
111
|
else
|
111
112
|
@pstmt.send(setter, idx += 1, param)
|
112
113
|
end
|
@@ -126,12 +127,16 @@ private
|
|
126
127
|
|
127
128
|
SETTER_MAP =
|
128
129
|
{
|
129
|
-
'
|
130
|
-
'
|
131
|
-
'
|
132
|
-
|
130
|
+
'Java::JavaSql::Date' => :setDate,
|
131
|
+
'Java::JavaSql::Time' => :setTime,
|
132
|
+
'Java::JavaSql::Timestamp' => :setTimestamp,
|
133
|
+
'Time' => :setTimestamp,
|
134
|
+
'Java::JavaSql::Blob' => :setBinaryStream,
|
135
|
+
|
136
|
+
# Only available when MySQL JDBC driver is loaded.
|
137
|
+
# So we use the string representation of the class.
|
138
|
+
'Java::ComMysqlJdbc::Blob' => :setBinaryStream
|
133
139
|
|
134
|
-
'com.mysql.jdbc.Blob' => :setBinaryStream
|
135
140
|
# FIXME-MORE
|
136
141
|
} # :nodoc:
|
137
142
|
|
data/test/test_jdbc-helper.rb
CHANGED
@@ -49,11 +49,20 @@ class TestJdbcHelper < Test::Unit::TestCase
|
|
49
49
|
|
50
50
|
def reset_test_table conn
|
51
51
|
conn.update "drop table #{TEST_TABLE}" rescue nil
|
52
|
-
cnt = conn.update
|
53
|
-
create table
|
52
|
+
cnt = conn.update "
|
53
|
+
create table #{TEST_TABLE} (
|
54
54
|
a int primary key,
|
55
55
|
b varchar(100)
|
56
|
-
)
|
56
|
+
)"
|
57
|
+
assert_equal 0, cnt
|
58
|
+
end
|
59
|
+
|
60
|
+
def reset_test_table_ts conn
|
61
|
+
conn.update "drop table #{TEST_TABLE}" rescue nil
|
62
|
+
cnt = conn.update "
|
63
|
+
create table #{TEST_TABLE} (
|
64
|
+
a timestamp
|
65
|
+
)"
|
57
66
|
assert_equal 0, cnt
|
58
67
|
end
|
59
68
|
|
@@ -288,5 +297,22 @@ class TestJdbcHelper < Test::Unit::TestCase
|
|
288
297
|
end
|
289
298
|
end
|
290
299
|
end
|
300
|
+
|
301
|
+
def test_setter_timestamp
|
302
|
+
each_connection do | conn |
|
303
|
+
# Java timestamp
|
304
|
+
reset_test_table_ts conn
|
305
|
+
ts = java.sql.Timestamp.new(Time.now.to_i * 1000)
|
306
|
+
conn.prepare("insert into #{TEST_TABLE} values (?)").update(ts)
|
307
|
+
assert_equal ts, conn.query("select * from #{TEST_TABLE}")[0][0]
|
308
|
+
|
309
|
+
# Ruby time
|
310
|
+
reset_test_table_ts conn
|
311
|
+
ts = Time.now
|
312
|
+
conn.prepare("insert into #{TEST_TABLE} values (?)").update(ts)
|
313
|
+
got = conn.query("select * from #{TEST_TABLE}")[0][0]
|
314
|
+
assert_equal ts.to_i * 1000, got.getTime
|
315
|
+
end
|
316
|
+
end
|
291
317
|
end
|
292
318
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jdbc-helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Junegunn Choi
|
@@ -10,42 +10,42 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-22 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
20
19
|
none: false
|
21
20
|
requirements:
|
22
21
|
- - ~>
|
23
22
|
- !ruby/object:Gem::Version
|
24
23
|
version: 1.0.0
|
24
|
+
requirement: *id001
|
25
|
+
prerelease: false
|
25
26
|
type: :development
|
26
|
-
version_requirements: *id001
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: jeweler
|
29
|
-
|
30
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
29
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
31
30
|
none: false
|
32
31
|
requirements:
|
33
32
|
- - ~>
|
34
33
|
- !ruby/object:Gem::Version
|
35
34
|
version: 1.5.2
|
35
|
+
requirement: *id002
|
36
|
+
prerelease: false
|
36
37
|
type: :development
|
37
|
-
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: rcov
|
40
|
-
|
41
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
40
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
42
41
|
none: false
|
43
42
|
requirements:
|
44
43
|
- - ">="
|
45
44
|
- !ruby/object:Gem::Version
|
46
45
|
version: "0"
|
46
|
+
requirement: *id003
|
47
|
+
prerelease: false
|
47
48
|
type: :development
|
48
|
-
version_requirements: *id003
|
49
49
|
description: JDBCHelper::Connection object wraps around a JDBC connection and provides much nicer interface to crucial database operations from primitive selects and updates to more complex ones involving batch updates, prepared statements and transactions.
|
50
50
|
email: junegunn.c@gmail.com
|
51
51
|
executables: []
|
@@ -85,6 +85,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
85
|
requirements:
|
86
86
|
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
+
hash: 2
|
89
|
+
segments:
|
90
|
+
- 0
|
88
91
|
version: "0"
|
89
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
93
|
none: false
|