|
1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #include <jni.h> |
|
17 #include "DbmsResultSet.h" |
|
18 #include "DbmsStatement.h" |
|
19 #include "DbmsConnection.h" |
|
20 #include "Utils.h" |
|
21 #include "dbmsjni/com_symbian_dbms_jdbc_DbmsResultSet.h" |
|
22 |
|
23 |
|
24 // // |
|
25 // DbmsResultSet peer |
|
26 // // |
|
27 |
|
28 DbmsResultSet::DbmsResultSet(DbmsStatement* aStatement){ |
|
29 iStatement = aStatement; |
|
30 } |
|
31 |
|
32 DbmsResultSet::~DbmsResultSet(){ |
|
33 } |
|
34 |
|
35 |
|
36 // // |
|
37 // JNI |
|
38 // // |
|
39 |
|
40 /* |
|
41 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
42 * Method: _rowcount |
|
43 * Signature: (I)I |
|
44 */ |
|
45 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1rowcount |
|
46 (JNIEnv *, jobject, jint aPeerHandle) { |
|
47 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
48 RDbView& view = rset->iStatement->iView; |
|
49 jint res = 0; |
|
50 TRAPD(err, res = view.CountL() ); |
|
51 if ( err != KErrNone ) { |
|
52 return err; |
|
53 } |
|
54 return res; |
|
55 } |
|
56 |
|
57 /* |
|
58 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
59 * Method: _colcount |
|
60 * Signature: (I)I |
|
61 */ |
|
62 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1colcount |
|
63 (JNIEnv *, jobject, jint aPeerHandle) { |
|
64 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
65 RDbView& view = rset->iStatement->iView; |
|
66 return view.ColCount(); |
|
67 } |
|
68 |
|
69 /* |
|
70 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
71 * Method: _next |
|
72 * Signature: (II)Z |
|
73 */ |
|
74 JNIEXPORT jboolean JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1next |
|
75 (JNIEnv *, jobject, jint aPeerHandle, jint aCount) { |
|
76 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
77 RDbView& view = rset->iStatement->iView; |
|
78 TBool res = EFalse; |
|
79 TInt err = 0; |
|
80 for ( TInt i = 0; i < aCount ; i++ ) |
|
81 { |
|
82 TRAP( err, res = view.NextL() ); |
|
83 if ( err != KErrNone || ! res ) |
|
84 { |
|
85 return false; |
|
86 } |
|
87 } |
|
88 TRAP(err, view.GetL()); |
|
89 if ( err != KErrNone ) { |
|
90 return false; |
|
91 } |
|
92 return true; |
|
93 } |
|
94 |
|
95 /* |
|
96 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
97 * Method: _first |
|
98 * Signature: (I)Z |
|
99 */ |
|
100 JNIEXPORT jboolean JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1first |
|
101 (JNIEnv *, jobject, jint aPeerHandle){ |
|
102 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
103 RDbView& view = rset->iStatement->iView; |
|
104 TBool res = EFalse; |
|
105 TInt err = 0; |
|
106 TRAP(err, res = view.FirstL()); |
|
107 if ( err != KErrNone ) { |
|
108 return false; |
|
109 } |
|
110 if ( res ) { |
|
111 TRAP(err, view.GetL()); |
|
112 if ( err != KErrNone ) { |
|
113 return false; |
|
114 } |
|
115 return true; |
|
116 } |
|
117 return false; |
|
118 } |
|
119 |
|
120 /* |
|
121 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
122 * Method: _last |
|
123 * Signature: (I)Z |
|
124 */ |
|
125 JNIEXPORT jboolean JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1last |
|
126 (JNIEnv *, jobject, jint aPeerHandle) { |
|
127 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
128 RDbView& view = rset->iStatement->iView; |
|
129 TBool res = EFalse; |
|
130 TInt err = 0; |
|
131 TRAP(err, res = view.LastL()); |
|
132 if ( res ) { |
|
133 TRAP(err, view.GetL()); |
|
134 if ( err != KErrNone ) { |
|
135 return false; |
|
136 } |
|
137 return true; |
|
138 } |
|
139 return false; |
|
140 } |
|
141 |
|
142 /* |
|
143 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
144 * Method: _prev |
|
145 * Signature: (II)Z |
|
146 */ |
|
147 JNIEXPORT jboolean JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1prev |
|
148 (JNIEnv *, jobject, jint aPeerHandle, jint aCount) { |
|
149 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
150 RDbView& view = rset->iStatement->iView; |
|
151 TBool res = EFalse; |
|
152 TInt err = 0; |
|
153 for ( TInt i = 0; i < aCount ; i++ ) |
|
154 { |
|
155 TRAP( err, res = view.PreviousL() ); |
|
156 if ( err != KErrNone || ! res ) |
|
157 { |
|
158 return false; |
|
159 } |
|
160 } |
|
161 TRAP(err, view.GetL()); |
|
162 if ( err != KErrNone ) { |
|
163 return false; |
|
164 } |
|
165 return true; |
|
166 } |
|
167 |
|
168 /* |
|
169 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
170 * Method: _close |
|
171 * Signature: (I)V |
|
172 */ |
|
173 JNIEXPORT void JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1close |
|
174 (JNIEnv *, jobject, jint aPeerHandle) { |
|
175 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
176 RDbView& view = rset->iStatement->iView; |
|
177 view.Close(); |
|
178 delete rset; |
|
179 } |
|
180 |
|
181 /* |
|
182 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
183 * Method: delete |
|
184 * Signature: (I)Z |
|
185 */ |
|
186 JNIEXPORT jboolean JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1delete |
|
187 (JNIEnv *, jobject, jint /*aPeerHandle*/) { |
|
188 // not implemented |
|
189 return false; |
|
190 } |
|
191 |
|
192 /* |
|
193 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
194 * Method: _isSigned |
|
195 * Signature: (II)I |
|
196 */ |
|
197 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1isSigned |
|
198 (JNIEnv *, jobject, jint aPeerHandle, jint aColNo) { |
|
199 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
200 RDbView& view = rset->iStatement->iView; |
|
201 TDbColType type = view.ColType(aColNo); |
|
202 switch ( type ) { |
|
203 case EDbColInt8 : |
|
204 case EDbColInt16 : |
|
205 case EDbColInt32 : |
|
206 case EDbColInt64 : |
|
207 case EDbColReal32: |
|
208 case EDbColReal64: |
|
209 { |
|
210 return 1; |
|
211 }break; |
|
212 default: |
|
213 return 0; |
|
214 } |
|
215 } |
|
216 |
|
217 /* |
|
218 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
219 * Method: _isFirst |
|
220 * Signature: (I)I |
|
221 */ |
|
222 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1isFirst |
|
223 (JNIEnv *, jobject, jint aPeerHandle) { |
|
224 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
225 RDbView& view = rset->iStatement->iView; |
|
226 return view.AtBeginning(); |
|
227 } |
|
228 |
|
229 /* |
|
230 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
231 * Method: _isLast |
|
232 * Signature: (I)I |
|
233 */ |
|
234 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1isLast |
|
235 (JNIEnv *, jobject, jint aPeerHandle){ |
|
236 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
237 RDbView& view = rset->iStatement->iView; |
|
238 return view.AtEnd(); |
|
239 } |
|
240 |
|
241 /* |
|
242 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
243 * Method: _isAutoIncrement |
|
244 * Signature: (II)I |
|
245 */ |
|
246 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1isAutoIncrement |
|
247 (JNIEnv *, jobject, jint aPeerHandle, jint aColumn) { |
|
248 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
249 RDbView& view = rset->iStatement->iView; |
|
250 TDbCol col = view.ColDef(aColumn); |
|
251 if ( col.iAttributes & TDbCol::EAutoIncrement ) { |
|
252 return 1; // Auto increment |
|
253 } else { |
|
254 return 0; // Not auto increment |
|
255 } |
|
256 } |
|
257 |
|
258 /* |
|
259 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
260 * Method: _isNullable |
|
261 * Signature: (II)I |
|
262 */ |
|
263 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1isNullable |
|
264 (JNIEnv *, jobject, jint aPeerHandle, jint aColumn) { |
|
265 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
266 RDbView& view = rset->iStatement->iView; |
|
267 TDbCol col = view.ColDef(aColumn); |
|
268 if ( col.iAttributes & TDbCol::ENotNull ) { |
|
269 return 1; // Nullable |
|
270 } else { |
|
271 return 0; // Not nullable |
|
272 } |
|
273 } |
|
274 |
|
275 /* |
|
276 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
277 * Method: _columnNames |
|
278 * Signature: (I[Ljava/lang/String;)I |
|
279 */ |
|
280 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1columnNames |
|
281 (JNIEnv *aEnv, jobject, jint aPeerHandle, jobjectArray aNames) { |
|
282 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
283 RDbView& view = rset->iStatement->iView; |
|
284 TInt colCount = view.ColCount(); |
|
285 for( TInt i = 0 ; i < colCount ; i++ ) { |
|
286 TDbCol col = view.ColDef(i+1); |
|
287 jstring colName = CreateJavaString(aEnv,col.iName); |
|
288 aEnv->SetObjectArrayElement(aNames, i, colName); |
|
289 } |
|
290 return 0; |
|
291 } |
|
292 |
|
293 |
|
294 /* |
|
295 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
296 * Method: _coltypes |
|
297 * Signature: (I[I)I |
|
298 */ |
|
299 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1columnTypes |
|
300 (JNIEnv *aEnv, jobject, jint aPeerHandle, jintArray aTypes) { |
|
301 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
302 RDbView& view = rset->iStatement->iView; |
|
303 TInt colCount = view.ColCount(); |
|
304 for( TInt i = 0 ; i < colCount ; i++ ) { |
|
305 TDbCol col = view.ColDef(i+1); |
|
306 jint colType = col.iType; |
|
307 aEnv->SetIntArrayRegion(aTypes,i,1,&colType); |
|
308 } |
|
309 return 0; |
|
310 } |
|
311 |
|
312 |
|
313 /* |
|
314 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
315 * Method: _getBoolean |
|
316 * Signature: (I)Z |
|
317 */ |
|
318 JNIEXPORT jboolean JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getBoolean |
|
319 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex) { |
|
320 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
321 RDbView& view = rset->iStatement->iView; |
|
322 TInt val = view.ColUint8(aColIndex); |
|
323 if ( val == 0 ) { |
|
324 return false; |
|
325 } else { |
|
326 return true; |
|
327 } |
|
328 } |
|
329 |
|
330 /* |
|
331 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
332 * Method: _getByte |
|
333 * Signature: (I)B |
|
334 */ |
|
335 JNIEXPORT jbyte JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getByte |
|
336 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex){ |
|
337 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
338 RDbView& view = rset->iStatement->iView; |
|
339 jbyte ret = view.ColInt8(aColIndex); |
|
340 return ret; |
|
341 } |
|
342 |
|
343 /* |
|
344 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
345 * Method: _getShort |
|
346 * Signature: (I)S |
|
347 */ |
|
348 JNIEXPORT jshort JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getShort |
|
349 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex){ |
|
350 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
351 RDbView& view = rset->iStatement->iView; |
|
352 return (jshort) view.ColInt16(aColIndex); |
|
353 } |
|
354 |
|
355 /* |
|
356 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
357 * Method: _getInteger |
|
358 * Signature: (I)I |
|
359 */ |
|
360 JNIEXPORT jint JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getInteger |
|
361 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex){ |
|
362 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
363 RDbView& view = rset->iStatement->iView; |
|
364 TInt res = view.ColInt(aColIndex); |
|
365 return (jint)res; |
|
366 } |
|
367 |
|
368 /* |
|
369 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
370 * Method: _getLong |
|
371 * Signature: (I)J |
|
372 */ |
|
373 JNIEXPORT jlong JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getLong |
|
374 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex){ |
|
375 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
376 RDbView& view = rset->iStatement->iView; |
|
377 return (jlong) view.ColInt64(aColIndex); |
|
378 } |
|
379 |
|
380 /* |
|
381 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
382 * Method: _getFloat |
|
383 * Signature: (I)F |
|
384 */ |
|
385 JNIEXPORT jfloat JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getFloat |
|
386 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex){ |
|
387 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
388 RDbView& view = rset->iStatement->iView; |
|
389 return (jfloat) view.ColReal32(aColIndex); |
|
390 } |
|
391 |
|
392 |
|
393 /* |
|
394 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
395 * Method: _getTime |
|
396 * Signature: (I)J |
|
397 */ |
|
398 JNIEXPORT jlong JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getTime |
|
399 (JNIEnv *aEnv, jobject, jint aPeerHandle, jint aColIndex){ |
|
400 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
401 RDbView& view = rset->iStatement->iView; |
|
402 TTime stored = view.ColTime(aColIndex); |
|
403 TInt64 time = stored.Int64(); |
|
404 // sym time (0AD) to java time (1970AD) adjustment |
|
405 TInt64 adjustment = MAKE_TINT64(0x00dcddb3,0x0f2f8000); |
|
406 TInt64 result = time - adjustment; |
|
407 jlong rv = result / 1000; // convert microseconds into millisconds |
|
408 return rv; |
|
409 } |
|
410 |
|
411 |
|
412 /* |
|
413 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
414 * Method: _getText |
|
415 * Signature: (I)Ljava/lang/String; |
|
416 */ |
|
417 JNIEXPORT jstring JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getText |
|
418 (JNIEnv *aEnv, jobject, jint aPeerHandle, jint aColIndex){ |
|
419 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
420 RDbView& view = rset->iStatement->iView; |
|
421 jstring jstr = NULL; |
|
422 // handle wide/8bit text types |
|
423 TDbColNo colNo(aColIndex); |
|
424 if ( view.IsColNull(colNo) ) { |
|
425 return jstr; |
|
426 } |
|
427 TDbCol def = view.ColDef(aColIndex); |
|
428 jint colType = def.iType; |
|
429 |
|
430 if ( colType == EDbColText8) { |
|
431 TPtrC8 tmp = view.ColDes8(aColIndex); |
|
432 RBuf buf; |
|
433 TInt res = buf.Create(tmp.Length()); |
|
434 if ( res != KErrNone ) { |
|
435 ThrowExc(aEnv, res ); |
|
436 return jstr; |
|
437 } |
|
438 buf.Copy(tmp); |
|
439 jstr = CreateJavaString(aEnv, buf); |
|
440 } else if ( colType == EDbColLongText8 ) { |
|
441 TInt blobLength = view.ColLength(aColIndex); |
|
442 RBuf8 cbuf; |
|
443 TInt res = cbuf.Create(blobLength); |
|
444 if ( res != KErrNone ) { |
|
445 ThrowExc(aEnv, res ); |
|
446 return jstr; |
|
447 } |
|
448 |
|
449 RDbColReadStream blob; |
|
450 TRAP(res, blob.OpenL(view,aColIndex)); |
|
451 if ( res != KErrNone ) { |
|
452 ThrowExc(aEnv, res ); |
|
453 cbuf.Close(); |
|
454 return jstr; |
|
455 } |
|
456 TRAP(res, blob.ReadL(cbuf, blobLength)); |
|
457 if ( res != KErrNone ) { |
|
458 ThrowExc(aEnv, res ); |
|
459 cbuf.Close(); |
|
460 blob.Release(); |
|
461 blob.Close(); |
|
462 return jstr; |
|
463 } |
|
464 blob.Release(); |
|
465 blob.Close(); |
|
466 |
|
467 RBuf buf; |
|
468 res = buf.Create(cbuf.Length()); |
|
469 if ( res != KErrNone ) { |
|
470 ThrowExc(aEnv, res ); |
|
471 cbuf.Close(); |
|
472 return jstr; |
|
473 } |
|
474 buf.Copy(cbuf); |
|
475 cbuf.Close(); |
|
476 jstr = CreateJavaString(aEnv, buf); |
|
477 buf.Close(); |
|
478 } else if ( colType == EDbColLongText16 ) { |
|
479 TInt blobLength = view.ColLength(aColIndex); |
|
480 RBuf cbuf; |
|
481 TInt res = cbuf.Create(blobLength); |
|
482 if ( res != KErrNone ) { |
|
483 ThrowExc(aEnv, res ); |
|
484 return jstr; |
|
485 } |
|
486 |
|
487 RDbColReadStream blob; |
|
488 TRAP(res, blob.OpenL(view,aColIndex)); |
|
489 if ( res != KErrNone ) { |
|
490 ThrowExc(aEnv, res ); |
|
491 cbuf.Close(); |
|
492 return jstr; |
|
493 } |
|
494 TRAP(res, blob.ReadL(cbuf, blobLength)); |
|
495 if ( res != KErrNone ) { |
|
496 ThrowExc(aEnv, res ); |
|
497 cbuf.Close(); |
|
498 blob.Release(); |
|
499 blob.Close(); |
|
500 return jstr; |
|
501 } |
|
502 blob.Release(); |
|
503 blob.Close(); |
|
504 |
|
505 jstr = CreateJavaString(aEnv, cbuf); |
|
506 cbuf.Close(); |
|
507 } else { |
|
508 // 16 bit / wide string |
|
509 TPtrC ptr = view.ColDes16(aColIndex); |
|
510 jstr = CreateJavaString(aEnv, ptr); |
|
511 } |
|
512 |
|
513 return jstr; |
|
514 } |
|
515 |
|
516 /* |
|
517 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
518 * Method: _getBytes |
|
519 * Signature: (I)[B |
|
520 */ |
|
521 JNIEXPORT jbyteArray JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getBytes |
|
522 (JNIEnv *aEnv, jobject, jint aPeerHandle, jint aColIndex){ |
|
523 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
524 RDbView& view = rset->iStatement->iView; |
|
525 jbyteArray array = NULL; |
|
526 TDbColNo colNo(aColIndex); |
|
527 if ( view.IsColNull(colNo) ) { |
|
528 return array; |
|
529 } |
|
530 TDbCol col = view.ColDef(aColIndex); |
|
531 TInt colType = col.iType; |
|
532 TInt size = view.ColSize(aColIndex); |
|
533 if ( colType == EDbColBinary ) { |
|
534 TPtrC8 buf = view.ColDes8(aColIndex); |
|
535 array = aEnv->NewByteArray(size); |
|
536 aEnv->SetByteArrayRegion(array, 0, size, (jbyte*)buf.Ptr()); |
|
537 return array; |
|
538 } else { |
|
539 RDbColReadStream stream; |
|
540 TRAPD(err, stream.OpenL(view, aColIndex)); |
|
541 if ( err != KErrNone ) { |
|
542 ThrowExc(aEnv, err ); |
|
543 return array; |
|
544 } |
|
545 |
|
546 // read from stream into buffer |
|
547 RBuf8 buf; |
|
548 err = buf.Create(size); |
|
549 if ( err != KErrNone ) { |
|
550 ThrowExc(aEnv, err ); |
|
551 stream.Release(); |
|
552 stream.Close(); |
|
553 return array; |
|
554 } |
|
555 |
|
556 stream.ReadL(buf, size); |
|
557 stream.Release(); |
|
558 stream.Close(); |
|
559 array = aEnv->NewByteArray(size); |
|
560 aEnv->SetByteArrayRegion(array, 0, size, (jbyte*)buf.Ptr()); |
|
561 buf.Close(); |
|
562 return array; |
|
563 } |
|
564 } |
|
565 |
|
566 /* |
|
567 * Class: com_symbian_dbms_jdbc_DbmsResultSet |
|
568 * Method: _getDouble |
|
569 * Signature: (I)D |
|
570 */ |
|
571 JNIEXPORT jdouble JNICALL Java_com_symbian_dbms_jdbc_DbmsResultSet__1getDouble |
|
572 (JNIEnv *, jobject, jint aPeerHandle, jint aColIndex){ |
|
573 DbmsResultSet* rset = (DbmsResultSet*) aPeerHandle; |
|
574 RDbView& view = rset->iStatement->iView; |
|
575 return (jdouble) view.ColReal64(aColIndex); |
|
576 } |