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.
@@ -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
- param.getBinaryStream, param.length)
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
- 'java.sql.Date' => :setDate,
130
- 'java.sql.Time' => :setTime,
131
- 'java.sql.Timestamp' => :setTimestamp,
132
- 'java.sql.Blob' => :setBinaryStream,
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
 
@@ -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 tmp_jdbc_helper_test (
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.2
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-01 00:00:00 +09:00
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
- prerelease: false
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
- prerelease: false
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
- prerelease: false
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