jdbc-helper 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|