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.
@@ -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