1 // Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). |
1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). |
2 // All rights reserved. |
2 // All rights reserved. |
3 // This component and the accompanying materials are made available |
3 // This component and the accompanying materials are made available |
4 // under the terms of "Eclipse Public License v1.0" |
4 // under the terms of "Eclipse Public License v1.0" |
5 // which accompanies this distribution, and is available |
5 // which accompanies this distribution, and is available |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
11 // Contributors: |
11 // Contributors: |
12 // |
12 // |
13 // Description: |
13 // Description: |
14 // |
14 // |
15 |
15 |
16 #include "SqlAssert.h" //ESqlPanicInvalidObj, ESqlPanicObjExists |
16 #include "SqlPanic.h" //ESqlPanicInvalidObj, ESqlPanicObjExists |
17 #include "SqlDatabaseImpl.h" //CSqlDatabaseImpl |
17 #include "SqlDatabaseImpl.h" //CSqlDatabaseImpl |
18 #include "OstTraceDefinitions.h" |
|
19 #ifdef OST_TRACE_COMPILER_IN_USE |
|
20 #include "SqlDatabaseTraces.h" |
|
21 #endif |
|
22 #include "SqlTraceDef.h" |
|
23 |
18 |
24 /** |
19 /** |
25 Gets the category of the return code value that is returned by |
20 Gets the category of the return code value that is returned by |
26 a call to the SQL API. |
21 a call to the SQL API. |
27 |
22 |
98 |
93 |
99 @capability None |
94 @capability None |
100 */ |
95 */ |
101 EXPORT_C TInt RSqlDatabase::Create(const TDesC& aDbFileName, const TDesC8* aConfig) |
96 EXPORT_C TInt RSqlDatabase::Create(const TDesC& aDbFileName, const TDesC8* aConfig) |
102 { |
97 { |
103 __SQLTRACE_BORDEREXPR(TPtrC8 config(aConfig ? *aConfig : KNullDesC8)); |
98 SQLUTRACE_PROFILER(this); |
104 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
99 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
105 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_CREATE_ENTRY, "Entry;0x%X;RSqlDatabase::Create;aDbFileName=%S;aConfig=%s", (TUint)this, __SQLPRNSTR(aDbFileName), __SQLPRNSTR8(config, des16prnbuf))); |
100 SYMBIAN_TRACE_SQL_EVENTS_ONLY(aConfig ? (void)UTF::Printf(UTF::TTraceContext(UTF::EInternals), |
|
101 KStrParam, 2, aConfig) : void(0)); |
|
102 |
106 TRAPD(err, iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreate, aDbFileName, NULL, aConfig)); |
103 TRAPD(err, iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreate, aDbFileName, NULL, aConfig)); |
107 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_CREATE_Exit, "Exit;0x%X;RSqlDatabase::Create;iImpl=0x%X;err=%d", (TUint)this, (TUint)iImpl, err)); |
|
108 return err; |
104 return err; |
109 } |
105 } |
110 |
106 |
111 /** |
107 /** |
112 Creates a new shared secure database. |
108 Creates a new shared secure database. |
148 @see RSqlSecurityPolicy::TPolicyType |
144 @see RSqlSecurityPolicy::TPolicyType |
149 */ |
145 */ |
150 EXPORT_C TInt RSqlDatabase::Create(const TDesC& aDbFileName, |
146 EXPORT_C TInt RSqlDatabase::Create(const TDesC& aDbFileName, |
151 const RSqlSecurityPolicy& aSecurityPolicy, const TDesC8* aConfig) |
147 const RSqlSecurityPolicy& aSecurityPolicy, const TDesC8* aConfig) |
152 { |
148 { |
153 __SQLTRACE_BORDEREXPR(TPtrC8 config(aConfig ? *aConfig : KNullDesC8)); |
149 SQLUTRACE_PROFILER(this); |
154 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
150 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
155 SQL_TRACE_BORDER(OstTraceExt4(TRACE_BORDER, RSQLDATABASE_CREATE2_ENTRY, "Entry;0x%X;RSqlDatabase::Create;aDbFileName=%S;aSecurityPolicy=0x%X;aConfig=%s", (TUint)this, __SQLPRNSTR(aDbFileName), (TUint)&aSecurityPolicy, __SQLPRNSTR8(config, des16prnbuf))); |
151 SYMBIAN_TRACE_SQL_EVENTS_ONLY(aConfig ? (void)UTF::Printf(UTF::TTraceContext(UTF::EInternals), |
156 TRAPD(err, iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreateSecure, aDbFileName, &aSecurityPolicy.Impl(), aConfig)); |
152 KStrParam, 2, aConfig) : void(0)); |
157 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_CREATE2_Exit, "Exit;0x%X;RSqlDatabase::Create;iImpl=0x%X;err=%d", (TUint)this, (TUint)iImpl, err)); |
153 |
|
154 TRAPD(err, iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreateSecure, aDbFileName, |
|
155 &aSecurityPolicy.Impl(), aConfig)); |
158 return err; |
156 return err; |
159 } |
157 } |
160 |
158 |
161 /** |
159 /** |
162 Opens an existing database, which can be: |
160 Opens an existing database, which can be: |
199 @see RSqlSecurityPolicy |
197 @see RSqlSecurityPolicy |
200 @see RSqlSecurityPolicy::TPolicyType |
198 @see RSqlSecurityPolicy::TPolicyType |
201 */ |
199 */ |
202 EXPORT_C TInt RSqlDatabase::Open(const TDesC& aDbFileName, const TDesC8* aConfig) |
200 EXPORT_C TInt RSqlDatabase::Open(const TDesC& aDbFileName, const TDesC8* aConfig) |
203 { |
201 { |
204 __SQLTRACE_BORDEREXPR(TPtrC8 config(aConfig ? *aConfig : KNullDesC8)); |
202 SQLUTRACE_PROFILER(this); |
205 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
203 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
206 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_OPEN_ENTRY, "Entry;0x%X;RSqlDatabase::Open;aDbFileName=%S;aConfig=%s", (TUint)this, __SQLPRNSTR(aDbFileName), __SQLPRNSTR8(config, des16prnbuf))); |
204 SYMBIAN_TRACE_SQL_EVENTS_ONLY(aConfig ? (void)UTF::Printf(UTF::TTraceContext(UTF::EInternals), |
|
205 KStrParam, 2, aConfig) : void(0)); |
|
206 |
207 TRAPD(err, iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbOpen, aDbFileName, NULL, aConfig)); |
207 TRAPD(err, iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbOpen, aDbFileName, NULL, aConfig)); |
208 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_OPEN_EXIT, "Exit;0x%X;RSqlDatabase::Open;iImpl=0x%X;err=%d", (TUint)this, (TUint)iImpl, err)); |
|
209 return err; |
208 return err; |
210 } |
209 } |
211 |
210 |
212 /** |
211 /** |
213 Creates a new shared non-secure or private secure database. |
212 Creates a new shared non-secure or private secure database. |
239 |
238 |
240 @capability None |
239 @capability None |
241 */ |
240 */ |
242 EXPORT_C void RSqlDatabase::CreateL(const TDesC& aDbFileName, const TDesC8* aConfig) |
241 EXPORT_C void RSqlDatabase::CreateL(const TDesC& aDbFileName, const TDesC8* aConfig) |
243 { |
242 { |
244 __SQLTRACE_BORDEREXPR(TPtrC8 config(aConfig ? *aConfig : KNullDesC8)); |
243 SQLUTRACE_PROFILER(this); |
245 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
244 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
246 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_CREATEL_ENTRY, "Entry;0x%X;RSqlDatabase::CreateL;aDbFileName=%S;aConfig=%s", (TUint)this, __SQLPRNSTR(aDbFileName), __SQLPRNSTR8(config, des16prnbuf))); |
245 SYMBIAN_TRACE_SQL_EVENTS_ONLY(aConfig ? (void)UTF::Printf(UTF::TTraceContext(UTF::EInternals), |
|
246 KStrParam, 2, aConfig) : void(0)); |
|
247 |
247 iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreate, aDbFileName, NULL, aConfig); |
248 iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreate, aDbFileName, NULL, aConfig); |
248 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_CREATEL_EXIT, "Entry;0x%X;RSqlDatabase::CreateL;iImpl=0x%X", (TUint)this, (TUint)iImpl)); |
|
249 } |
249 } |
250 |
250 |
251 /** |
251 /** |
252 Creates a new shared secure database. |
252 Creates a new shared secure database. |
253 @param aDbFileName The name of the file that is to host the database. |
253 @param aDbFileName The name of the file that is to host the database. |
286 @see RSqlSecurityPolicy::TPolicyType |
286 @see RSqlSecurityPolicy::TPolicyType |
287 */ |
287 */ |
288 EXPORT_C void RSqlDatabase::CreateL(const TDesC& aDbFileName, |
288 EXPORT_C void RSqlDatabase::CreateL(const TDesC& aDbFileName, |
289 const RSqlSecurityPolicy& aSecurityPolicy, const TDesC8* aConfig) |
289 const RSqlSecurityPolicy& aSecurityPolicy, const TDesC8* aConfig) |
290 { |
290 { |
291 __SQLTRACE_BORDEREXPR(TPtrC8 config(aConfig ? *aConfig : KNullDesC8)); |
291 SQLUTRACE_PROFILER(this); |
292 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
292 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
293 SQL_TRACE_BORDER(OstTraceExt4(TRACE_BORDER, RSQLDATABASE_CREATEL2_ENTRY, "Entry;0x%X;RSqlDatabase::CreateL;aDbFileName=%S;aSecurityPolicy=0x%X;aConfig=%s", (TUint)this, __SQLPRNSTR(aDbFileName), (TUint)&aSecurityPolicy, __SQLPRNSTR8(config, des16prnbuf))); |
293 SYMBIAN_TRACE_SQL_EVENTS_ONLY(aConfig ? (void)UTF::Printf(UTF::TTraceContext(UTF::EInternals), |
294 iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreateSecure, aDbFileName, &aSecurityPolicy.Impl(), aConfig); |
294 KStrParam, 2, aConfig) : void(0)); |
295 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_CREATEL2_EXIT, "Exit;0x%X;RSqlDatabase::CreateL;iImpl=0x%X", (TUint)this, (TUint)iImpl)); |
295 |
|
296 iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbCreateSecure, aDbFileName, |
|
297 &aSecurityPolicy.Impl(), aConfig); |
296 } |
298 } |
297 |
299 |
298 /** |
300 /** |
299 Opens an existing database, which can be: |
301 Opens an existing database, which can be: |
300 @code |
302 @code |
335 @see RSqlSecurityPolicy |
337 @see RSqlSecurityPolicy |
336 @see RSqlSecurityPolicy::TPolicyType |
338 @see RSqlSecurityPolicy::TPolicyType |
337 */ |
339 */ |
338 EXPORT_C void RSqlDatabase::OpenL(const TDesC& aDbFileName, const TDesC8* aConfig) |
340 EXPORT_C void RSqlDatabase::OpenL(const TDesC& aDbFileName, const TDesC8* aConfig) |
339 { |
341 { |
340 __SQLTRACE_BORDEREXPR(TPtrC8 config(aConfig ? *aConfig : KNullDesC8)); |
342 SQLUTRACE_PROFILER(this); |
341 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_OPENL_ENTRY, "Entry;0x%X;RSqlDatabase::OpenL;aDbFileName=%S;aConfig=%s", (TUint)this, __SQLPRNSTR(aDbFileName), __SQLPRNSTR(config))); |
343 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
|
344 SYMBIAN_TRACE_SQL_EVENTS_ONLY(aConfig ? (void)UTF::Printf(UTF::TTraceContext(UTF::EInternals), |
|
345 KStrParam, 2, aConfig) : void(0)); |
|
346 |
342 iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbOpen, aDbFileName, NULL, aConfig); |
347 iImpl = CSqlDatabaseImpl::NewL(ESqlSrvDbOpen, aDbFileName, NULL, aConfig); |
343 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_OPENL_EXIT, "Exit;0x%X;RSqlDatabase::OpenL;iImpl=0x%X", (TUint)this, (TUint)iImpl)); |
|
344 } |
348 } |
345 |
349 |
346 /** |
350 /** |
347 Closes this handle to the database. |
351 Closes this handle to the database. |
348 |
352 |
356 |
360 |
357 @capability None |
361 @capability None |
358 */ |
362 */ |
359 EXPORT_C void RSqlDatabase::Close() |
363 EXPORT_C void RSqlDatabase::Close() |
360 { |
364 { |
361 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_CLOSE_ENTRY, "Entry;0x%X;RSqlDatabase::Close;iImpl=0x%X", (TUint)this, (TUint)iImpl)); |
365 SQLUTRACE_PROFILER(this); |
362 delete iImpl; |
366 delete iImpl; |
363 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_CLOSE_EXIT, "Exit;0x%X;RSqlDatabase::Close;iImpl=0x%X", (TUint)this, (TUint)iImpl)); |
|
364 iImpl = NULL; |
367 iImpl = NULL; |
365 } |
368 } |
366 |
369 |
367 /** |
370 /** |
368 Attaches an existing database to the current database connection. |
371 Attaches an existing database to the current database connection. |
403 @see RSqlSecurityPolicy |
406 @see RSqlSecurityPolicy |
404 @see RSqlSecurityPolicy::TPolicyType |
407 @see RSqlSecurityPolicy::TPolicyType |
405 */ |
408 */ |
406 EXPORT_C TInt RSqlDatabase::Attach(const TDesC& aDbFileName, const TDesC& aDbName) |
409 EXPORT_C TInt RSqlDatabase::Attach(const TDesC& aDbFileName, const TDesC& aDbName) |
407 { |
410 { |
408 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_ATTACH_ENTRY, "Entry;0x%X;RSqlDatabase::Attach;aDbFileName=%S;aDbName=%S", (TUint)this, __SQLPRNSTR(aDbFileName), __SQLPRNSTR(aDbName))); |
411 SQLUTRACE_PROFILER(this); |
409 TInt err = Impl().Attach(aDbFileName, aDbName); |
412 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrStrParam16, &aDbFileName, &aDbName)); |
410 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_ATTACH_EXIT, "Entry;0x%X;RSqlDatabase::Attach;err=%d", (TUint)this, err)); |
413 |
411 return err; |
414 return Impl().Attach(aDbFileName, aDbName); |
412 } |
415 } |
413 |
416 |
414 /** |
417 /** |
415 Detaches previously attached database. |
418 Detaches previously attached database. |
416 |
419 |
424 |
427 |
425 @capability None |
428 @capability None |
426 */ |
429 */ |
427 EXPORT_C TInt RSqlDatabase::Detach(const TDesC& aDbName) |
430 EXPORT_C TInt RSqlDatabase::Detach(const TDesC& aDbName) |
428 { |
431 { |
429 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_DETACH_ENTRY, "Entry;0x%X;RSqlDatabase::Detach;aDbName=%S", (TUint)this, __SQLPRNSTR(aDbName))); |
432 SQLUTRACE_PROFILER(this); |
430 TInt err = Impl().Detach(aDbName); |
433 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbName)); |
431 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_DETACH_EXIT, "Exit;0x%X;RSqlDatabase::Detach;err=%d", (TUint)this, err)); |
434 |
432 return err; |
435 return Impl().Detach(aDbName); |
433 } |
436 } |
434 |
437 |
435 /** |
438 /** |
436 Copies a database file to the specified location. |
439 Copies a database file to the specified location. |
437 |
440 |
465 |
468 |
466 Note that if the source database is a secure database, only the application, which created the database, can copy it. |
469 Note that if the source database is a secure database, only the application, which created the database, can copy it. |
467 */ |
470 */ |
468 EXPORT_C TInt RSqlDatabase::Copy(const TDesC& aSrcDbFileName, const TDesC& aDestDbFileName) |
471 EXPORT_C TInt RSqlDatabase::Copy(const TDesC& aSrcDbFileName, const TDesC& aDestDbFileName) |
469 { |
472 { |
470 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_COPY_ENTRY, "Entry;0;RSqlDatabase::Copy;aSrcDbFileName=%S;aDestDbFileName=%S", __SQLPRNSTR(aSrcDbFileName), __SQLPRNSTR(aDestDbFileName))); |
473 SQLUTRACE_PROFILER(0); |
471 TInt err = CSqlDatabaseImpl::Copy(aSrcDbFileName, aDestDbFileName); |
474 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrStrParam16, |
472 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_COPY_EXIT, "Exit;0;RSqlDatabase::Copy;err=%d", err)); |
475 &aSrcDbFileName, &aDestDbFileName)); |
473 return err; |
476 |
|
477 return CSqlDatabaseImpl::Copy(aSrcDbFileName, aDestDbFileName); |
474 } |
478 } |
475 |
479 |
476 /** |
480 /** |
477 Deletes the specified database file. |
481 Deletes the specified database file. |
478 |
482 |
498 |
502 |
499 Note that if the database to be deleted is a secure database, only the application, which created the database, can delete it. |
503 Note that if the database to be deleted is a secure database, only the application, which created the database, can delete it. |
500 */ |
504 */ |
501 EXPORT_C TInt RSqlDatabase::Delete(const TDesC& aDbFileName) |
505 EXPORT_C TInt RSqlDatabase::Delete(const TDesC& aDbFileName) |
502 { |
506 { |
503 SQL_TRACE_BORDER(OstTraceExt1(TRACE_BORDER, RSQLDATABASE_DELETE_ENTRY, "Entry;0;RSqlDatabase::Delete;aDbFileName=%S", __SQLPRNSTR(aDbFileName))); |
507 SQLUTRACE_PROFILER(0); |
504 TInt err = CSqlDatabaseImpl::Delete(aDbFileName); |
508 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aDbFileName)); |
505 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_DELETE_EXIT, "Exit;0;RSqlDatabase::Delete;err=%d", err)); |
509 |
506 return err; |
510 return CSqlDatabaseImpl::Delete(aDbFileName); |
507 } |
511 } |
508 |
512 |
509 /** |
513 /** |
510 Initializes aSecurityPolicy output parameter with a copy of the database security policies. |
514 Initializes aSecurityPolicy output parameter with a copy of the database security policies. |
511 The caller is responsible for destroying the initialized aSecurityPolicy paramemter. |
515 The caller is responsible for destroying the initialized aSecurityPolicy paramemter. |
521 |
525 |
522 @capability None |
526 @capability None |
523 */ |
527 */ |
524 EXPORT_C TInt RSqlDatabase::GetSecurityPolicy(RSqlSecurityPolicy& aSecurityPolicy) const |
528 EXPORT_C TInt RSqlDatabase::GetSecurityPolicy(RSqlSecurityPolicy& aSecurityPolicy) const |
525 { |
529 { |
526 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_GETSECURITYPOLICY_ENTRY, "Entry;0x%X;RSqlDatabase::GetSecurityPolicy;aSecurityPolicy=0x%X", (TUint)this, (TUint)&aSecurityPolicy)); |
530 SQLUTRACE_PROFILER(this); |
527 TRAPD(err, CSqlSecurityPolicy* securityPolicy = Impl().CloneSecurityPolicyL(); aSecurityPolicy.Set(*securityPolicy)); |
531 TRAPD(err, CSqlSecurityPolicy* securityPolicy = Impl().CloneSecurityPolicyL(); |
528 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_GETSECURITYPOLICY_EXIT, "Exit;0x%X;RSqlDatabase::GetSecurityPolicy;err=%d", (TUint)this, err)); |
532 aSecurityPolicy.Set(*securityPolicy)); |
|
533 |
529 return err; |
534 return err; |
530 } |
535 } |
531 |
536 |
532 /** |
537 /** |
533 Initializes aSecurityPolicy output parameter with a copy of the database security policies. |
538 Initializes aSecurityPolicy output parameter with a copy of the database security policies. |
543 |
548 |
544 @capability None |
549 @capability None |
545 */ |
550 */ |
546 EXPORT_C void RSqlDatabase::GetSecurityPolicyL(RSqlSecurityPolicy& aSecurityPolicy) const |
551 EXPORT_C void RSqlDatabase::GetSecurityPolicyL(RSqlSecurityPolicy& aSecurityPolicy) const |
547 { |
552 { |
548 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_GETSECURITYPOLICYL_ENTRY, "Entry;0x%X;RSqlDatabase::GetSecurityPolicyL;aSecurityPolicy=0x%X", (TUint)this, (TUint)&aSecurityPolicy)); |
553 SQLUTRACE_PROFILER(this); |
549 CSqlSecurityPolicy* securityPolicy = Impl().CloneSecurityPolicyL(); |
554 CSqlSecurityPolicy* securityPolicy = Impl().CloneSecurityPolicyL(); |
550 aSecurityPolicy.Set(*securityPolicy); |
555 aSecurityPolicy.Set(*securityPolicy); |
551 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_GETSECURITYPOLICYL_EXIT, "Exit;0x%X;RSqlDatabase::GetSecurityPolicyL", (TUint)this)); |
|
552 } |
556 } |
553 |
557 |
554 /** |
558 /** |
555 Sets the transaction isolation level for the database. |
559 Sets the transaction isolation level for the database. |
556 |
560 |
575 |
579 |
576 @capability None |
580 @capability None |
577 */ |
581 */ |
578 EXPORT_C TInt RSqlDatabase::SetIsolationLevel(RSqlDatabase::TIsolationLevel aIsolationLevel) |
582 EXPORT_C TInt RSqlDatabase::SetIsolationLevel(RSqlDatabase::TIsolationLevel aIsolationLevel) |
579 { |
583 { |
580 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_SETISOLATIONLEVEL_ENTRY, "Entry;0x%X;RSqlDatabase::SetIsolationLevel;aIsolationLevel=%d", (TUint)this, aIsolationLevel)); |
584 SQLUTRACE_PROFILER(this); |
581 TInt err = Impl().SetIsolationLevel(aIsolationLevel); |
585 return Impl().SetIsolationLevel(aIsolationLevel); |
582 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_SETISOLATIONLEVEL_EXIT, "Exit;0x%X;RSqlDatabase::SetIsolationLevel;err=%d", (TUint)this, err)); |
|
583 return err; |
|
584 } |
586 } |
585 |
587 |
586 /** |
588 /** |
587 Executes one or more 16-bit SQL statements. |
589 Executes one or more 16-bit SQL statements. |
588 |
590 |
628 @see RSqlSecurityPolicy |
630 @see RSqlSecurityPolicy |
629 @see RSqlSecurityPolicy::TPolicyType |
631 @see RSqlSecurityPolicy::TPolicyType |
630 */ |
632 */ |
631 EXPORT_C TInt RSqlDatabase::Exec(const TDesC& aSqlStmt) |
633 EXPORT_C TInt RSqlDatabase::Exec(const TDesC& aSqlStmt) |
632 { |
634 { |
633 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXEC16_ENTRY, "Entry;0x%X;RSqlDatabase::Exec16;aSqlStmt=%S", (TUint)this, __SQLPRNSTR(aSqlStmt))); |
635 SQLUTRACE_PROFILER(this); |
634 TInt err = Impl().Exec(aSqlStmt); |
636 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aSqlStmt)); |
635 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXEC16_EXIT, "Exit;0x%X;RSqlDatabase::Exec16;err=%d", (TUint)this, err)); |
637 |
636 return err; |
638 return Impl().Exec(aSqlStmt); |
637 } |
639 } |
638 |
640 |
639 /** |
641 /** |
640 Executes one or more 8-bit SQL statements. |
642 Executes one or more 8-bit SQL statements. |
641 |
643 |
681 @see RSqlSecurityPolicy |
683 @see RSqlSecurityPolicy |
682 @see RSqlSecurityPolicy::TPolicyType |
684 @see RSqlSecurityPolicy::TPolicyType |
683 */ |
685 */ |
684 EXPORT_C TInt RSqlDatabase::Exec(const TDesC8& aSqlStmt) |
686 EXPORT_C TInt RSqlDatabase::Exec(const TDesC8& aSqlStmt) |
685 { |
687 { |
686 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
688 SQLUTRACE_PROFILER(this); |
687 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXEC8_ENTRY, "Entry;0x%X;RSqlDatabase::Exec8;aSqlStmt=%s", (TUint)this, __SQLPRNSTR8(aSqlStmt, des16prnbuf))); |
689 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam, 1, &aSqlStmt)); |
688 TInt err = Impl().Exec(aSqlStmt); |
690 |
689 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXEC8_EXIT, "Exit;0x%X;RSqlDatabase::Exec8;err=%d", (TUint)this, err)); |
691 return Impl().Exec(aSqlStmt); |
690 return err; |
|
691 } |
692 } |
692 |
693 |
693 /** |
694 /** |
694 Executes one or more 16-bit SQL statements asynchronously to allow client to avoid being blocked |
695 Executes one or more 16-bit SQL statements asynchronously to allow client to avoid being blocked |
695 by server activity. |
696 by server activity. |
740 @see RSqlSecurityPolicy |
741 @see RSqlSecurityPolicy |
741 @see RSqlSecurityPolicy::TPolicyType |
742 @see RSqlSecurityPolicy::TPolicyType |
742 */ |
743 */ |
743 EXPORT_C void RSqlDatabase::Exec(const TDesC& aSqlStmt, TRequestStatus& aStatus) |
744 EXPORT_C void RSqlDatabase::Exec(const TDesC& aSqlStmt, TRequestStatus& aStatus) |
744 { |
745 { |
745 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXECASYNC16_ENTRY, "Entry;0x%X;RSqlDatabase::ExecAsync16;aSqlStmt=%S", (TUint)this, __SQLPRNSTR(aSqlStmt))); |
746 SQLUTRACE_PROFILER(this); |
|
747 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 1, &aSqlStmt)); |
|
748 |
746 Impl().Exec(aSqlStmt, aStatus); |
749 Impl().Exec(aSqlStmt, aStatus); |
747 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXECASYNC16_EXIT, "Exit;0x%X;RSqlDatabase::ExecAsync16;aStatus.Int()=%d", (TUint)this, aStatus.Int())); |
|
748 } |
750 } |
749 |
751 |
750 /** |
752 /** |
751 Executes one or more 8-bit SQL statements asynchronously to allow client to avoid being blocked |
753 Executes one or more 8-bit SQL statements asynchronously to allow client to avoid being blocked |
752 by server activity. |
754 by server activity. |
797 @see RSqlSecurityPolicy |
799 @see RSqlSecurityPolicy |
798 @see RSqlSecurityPolicy::TPolicyType |
800 @see RSqlSecurityPolicy::TPolicyType |
799 */ |
801 */ |
800 EXPORT_C void RSqlDatabase::Exec(const TDesC8& aSqlStmt, TRequestStatus& aStatus) |
802 EXPORT_C void RSqlDatabase::Exec(const TDesC8& aSqlStmt, TRequestStatus& aStatus) |
801 { |
803 { |
802 __SQLTRACE_BORDERVAR(TBuf<100> des16prnbuf); |
804 SQLUTRACE_PROFILER(this); |
803 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXECASYNC8_ENTRY, "Entry;0x%X;RSqlDatabase::ExecAsync8;aSqlStmt=%s", (TUint)this, __SQLPRNSTR8(aSqlStmt, des16prnbuf))); |
805 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam, 1, &aSqlStmt)); |
|
806 |
804 Impl().Exec(aSqlStmt, aStatus); |
807 Impl().Exec(aSqlStmt, aStatus); |
805 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_EXECASYNC8_EXIT, "Exit;0x%X;RSqlDatabase::ExecAsync8;aStatus.Int()=%d", (TUint)this, aStatus.Int())); |
|
806 } |
808 } |
807 |
809 |
808 /** |
810 /** |
809 Retrieves a reference to the textual description of the error returned by the |
811 Retrieves a reference to the textual description of the error returned by the |
810 most recent call to any of the functions: |
812 most recent call to any of the functions: |
829 |
831 |
830 @capability None |
832 @capability None |
831 */ |
833 */ |
832 EXPORT_C TPtrC RSqlDatabase::LastErrorMessage() const |
834 EXPORT_C TPtrC RSqlDatabase::LastErrorMessage() const |
833 { |
835 { |
834 TPtrC msg(Impl().LastErrorMessage()); |
836 SQLUTRACE_PROFILER(0); |
835 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_LASTERRORMESSAGE, "0x%X;RSqlDatabase::LastErrorMessage;msg=%S", (TUint)this, __SQLPRNSTR(msg))); |
837 return Impl().LastErrorMessage(); |
836 return msg; |
|
837 } |
838 } |
838 |
839 |
839 /** |
840 /** |
840 Returns the ROWID of the most recent successful INSERT into the database |
841 Returns the ROWID of the most recent successful INSERT into the database |
841 from this database connection. |
842 from this database connection. |
847 |
848 |
848 @capability None |
849 @capability None |
849 */ |
850 */ |
850 EXPORT_C TInt64 RSqlDatabase::LastInsertedRowId() const |
851 EXPORT_C TInt64 RSqlDatabase::LastInsertedRowId() const |
851 { |
852 { |
852 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_LASTINSERTEDROWID_ENTRY, "Entry;0x%X;RSqlDatabase::LastInsertedRowId", (TUint)this)); |
853 SQLUTRACE_PROFILER(0); |
853 TInt64 rc = Impl().LastInsertedRowId(); |
854 return Impl().LastInsertedRowId(); |
854 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_LASTINSERTEDROWID_EXIT, "Exit;0x%X;RSqlDatabase::LastInsertedRowId;RowId=%lld", (TUint)this, rc)); |
|
855 return rc; |
|
856 } |
855 } |
857 |
856 |
858 /** |
857 /** |
859 Checks the database transaction state. |
858 Checks the database transaction state. |
860 |
859 |
862 |
861 |
863 @capability None |
862 @capability None |
864 */ |
863 */ |
865 EXPORT_C TBool RSqlDatabase::InTransaction() const |
864 EXPORT_C TBool RSqlDatabase::InTransaction() const |
866 { |
865 { |
867 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_INTRABSACTION_ENTRY, "Entry;0x%X;RSqlDatabase::InTransaction", (TUint)this)); |
866 SQLUTRACE_PROFILER(0); |
868 TBool res = Impl().InTransaction(); |
867 return Impl().InTransaction(); |
869 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_INTRABSACTION_EXIT, "Exit;0x%X;RSqlDatabase::InTransaction;res=%d", (TUint)this, res)); |
|
870 return res; |
|
871 } |
868 } |
872 |
869 |
873 /** |
870 /** |
874 Returns the database file size, in bytes. |
871 Returns the database file size, in bytes. |
875 |
872 |
882 |
879 |
883 @capability None |
880 @capability None |
884 */ |
881 */ |
885 EXPORT_C TInt RSqlDatabase::Size() const |
882 EXPORT_C TInt RSqlDatabase::Size() const |
886 { |
883 { |
887 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_SIZE_ENTRY, "Entry;0x%X;RSqlDatabase::Size", (TUint)this)); |
884 SQLUTRACE_PROFILER(0); |
888 TInt rc = Impl().Size(); |
885 return Impl().Size(); |
889 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_SIZE_EXIT, "Exit;0x%X;RSqlDatabase::Size;rc=%d", (TUint)this, rc)); |
|
890 return rc; |
|
891 } |
886 } |
892 |
887 |
893 /** |
888 /** |
894 Returns the database file size and free space, in bytes. |
889 Returns the database file size and free space, in bytes. |
895 |
890 |
905 |
900 |
906 @capability None |
901 @capability None |
907 */ |
902 */ |
908 EXPORT_C TInt RSqlDatabase::Size(RSqlDatabase::TSize& aSize, const TDesC& aDbName) const |
903 EXPORT_C TInt RSqlDatabase::Size(RSqlDatabase::TSize& aSize, const TDesC& aDbName) const |
909 { |
904 { |
910 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_SIZE2_ENTRY, "Entry;0x%X;RSqlDatabase::Size-2;aDbName=%S", (TUint)this, __SQLPRNSTR(aDbName))); |
905 SQLUTRACE_PROFILER(0); |
911 TInt err = Impl().Size(aSize, aDbName); |
906 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KStrParam16, 2, &aDbName)); |
912 SQL_TRACE_BORDER(OstTraceExt4(TRACE_BORDER, RSQLDATABASE_SIZE2_EXIT, "Exit;0x%X;RSqlDatabase::Size-2;err=%d;aSize.iSize=%lld;aSize.iFree=%lld", (TUint)this, err, aSize.iSize, aSize.iFree)); |
907 |
913 return err; |
908 return Impl().Size(aSize, aDbName); |
914 } |
909 } |
915 |
910 |
916 /** |
911 /** |
917 Compacts the database. |
912 Compacts the database. |
918 This function should be used for databases that have been configured for a manual compaction during |
913 This function should be used for databases that have been configured for a manual compaction during |
943 |
938 |
944 @capability None |
939 @capability None |
945 */ |
940 */ |
946 EXPORT_C TInt RSqlDatabase::Compact(TInt64 aSize, const TDesC& aDbName) |
941 EXPORT_C TInt RSqlDatabase::Compact(TInt64 aSize, const TDesC& aDbName) |
947 { |
942 { |
948 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_COMPACT_ENTRY, "Entry;0x%X;RSqlDatabase::Compact;aSize=%lld;aDbName=%S", (TUint)this, aSize, __SQLPRNSTR(aDbName))); |
943 SQLUTRACE_PROFILER(this); |
949 TInt rc = Impl().Compact(aSize, aDbName); |
944 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KSizeStrParam16, 1, aSize, 2, &aDbName)); |
950 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_COMPACT_EXIT, "Exit;0x%X;RSqlDatabase::Compact;rc=%d", (TUint)this, rc)); |
945 |
951 return rc; |
946 return Impl().Compact(aSize, aDbName); |
952 } |
947 } |
953 |
948 |
954 /** |
949 /** |
955 Compacts the database asynchronously. |
950 Compacts the database asynchronously. |
956 This function should be used for databases that have been configured for a manual compaction during |
951 This function should be used for databases that have been configured for a manual compaction during |
983 |
978 |
984 @capability None |
979 @capability None |
985 */ |
980 */ |
986 EXPORT_C void RSqlDatabase::Compact(TInt64 aSize, TRequestStatus& aStatus, const TDesC& aDbName) |
981 EXPORT_C void RSqlDatabase::Compact(TInt64 aSize, TRequestStatus& aStatus, const TDesC& aDbName) |
987 { |
982 { |
988 SQL_TRACE_BORDER(OstTraceExt3(TRACE_BORDER, RSQLDATABASE_COMPACTASYNC_ENTRY, "Entry;0x%X;RSqlDatabase::CompactAsync;aSize=%lld;aDbName=%S", (TUint)this, aSize, __SQLPRNSTR(aDbName))); |
983 SQLUTRACE_PROFILER(this); |
|
984 SYMBIAN_TRACE_SQL_EVENTS_ONLY(UTF::Printf(UTF::TTraceContext(UTF::EInternals), KSizeStrParam16, 1, aSize, 3, &aDbName)); |
|
985 |
989 Impl().Compact(aSize, aDbName, aStatus); |
986 Impl().Compact(aSize, aDbName, aStatus); |
990 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_COMPACTASYNC_EXIT, "Exit;0x%X;RSqlDatabase::CompactAsync;aStatus.Int()=%d", (TUint)this, aStatus.Int())); |
|
991 } |
987 } |
992 |
988 |
993 /** |
989 /** |
994 Reserves a predefined amount of disk space on the drive where the database file is. |
990 Reserves a predefined amount of disk space on the drive where the database file is. |
995 |
991 |
1012 @see RSqlDatabase::GetReserveAccess() |
1008 @see RSqlDatabase::GetReserveAccess() |
1013 @see RSqlDatabase::ReleaseReserveAccess() |
1009 @see RSqlDatabase::ReleaseReserveAccess() |
1014 */ |
1010 */ |
1015 EXPORT_C TInt RSqlDatabase::ReserveDriveSpace(TInt aSize) |
1011 EXPORT_C TInt RSqlDatabase::ReserveDriveSpace(TInt aSize) |
1016 { |
1012 { |
1017 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_RESERVEDRIVESPACE_ENTRY, "Entry;0x%X;RSqlDatabase::ReserveDriveSpace;aSize=%d", (TUint)this, aSize)); |
1013 SQLUTRACE_PROFILER(this); |
1018 //Usage of the IPC call arguments: |
1014 //Usage of the IPC call arguments: |
1019 //Arg 0: [out] requested size |
1015 //Arg 0: [out] requested size |
1020 TInt err = Impl().Session().SendReceive(ESqlSrvDbReserveDriveSpace, TIpcArgs(aSize)); |
1016 return Impl().Session().SendReceive(ESqlSrvDbReserveDriveSpace, TIpcArgs(aSize)); |
1021 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_RESERVEDRIVESPACE_EXIT, "Exit;0x%X;RSqlDatabase::ReserveDriveSpace;err=%d", (TUint)this, err)); |
|
1022 return err; |
|
1023 } |
1017 } |
1024 |
1018 |
1025 /** |
1019 /** |
1026 Frees the reserved disk space. |
1020 Frees the reserved disk space. |
1027 |
1021 |
1029 @see RSqlDatabase::GetReserveAccess() |
1023 @see RSqlDatabase::GetReserveAccess() |
1030 @see RSqlDatabase::ReleaseReserveAccess() |
1024 @see RSqlDatabase::ReleaseReserveAccess() |
1031 */ |
1025 */ |
1032 EXPORT_C void RSqlDatabase::FreeReservedSpace() |
1026 EXPORT_C void RSqlDatabase::FreeReservedSpace() |
1033 { |
1027 { |
1034 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_FREERESERVEDSPACE_ENTRY, "Entry;0x%X;RSqlDatabase::FreeReservedSpace", (TUint)this)); |
1028 SQLUTRACE_PROFILER(this); |
1035 __SQLTRACE_BORDERVAR(TInt err =) Impl().Session().SendReceive(ESqlSrvDbFreeReservedSpace); |
1029 Impl().Session().SendReceive(ESqlSrvDbFreeReservedSpace); |
1036 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_FREERESERVEDSPACE_EXIT, "Exit;0x%X;RSqlDatabase::FreeReservedSpace;err=%d", (TUint)this, err)); |
|
1037 } |
1030 } |
1038 |
1031 |
1039 /** |
1032 /** |
1040 Gives the client an access to the already reserved disk space. |
1033 Gives the client an access to the already reserved disk space. |
1041 |
1034 |
1048 @see RSqlDatabase::FreeReservedSpace() |
1041 @see RSqlDatabase::FreeReservedSpace() |
1049 @see RSqlDatabase::ReleaseReserveAccess() |
1042 @see RSqlDatabase::ReleaseReserveAccess() |
1050 */ |
1043 */ |
1051 EXPORT_C TInt RSqlDatabase::GetReserveAccess() |
1044 EXPORT_C TInt RSqlDatabase::GetReserveAccess() |
1052 { |
1045 { |
1053 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_GETRESERVEACCESS_ENTRY, "Exit;0x%X;RSqlDatabase::GetReserveAccess", (TUint)this)); |
1046 SQLUTRACE_PROFILER(this); |
1054 TInt err = Impl().Session().SendReceive(ESqlSrvDbGetReserveAccess); |
1047 return Impl().Session().SendReceive(ESqlSrvDbGetReserveAccess); |
1055 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_GETRESERVEACCESS_EXIT, "Exit;0x%X;RSqlDatabase::GetReserveAccess;err=%d", (TUint)this, err)); |
|
1056 return err; |
|
1057 } |
1048 } |
1058 |
1049 |
1059 /** |
1050 /** |
1060 Releases the access to the reserved disk space. |
1051 Releases the access to the reserved disk space. |
1061 |
1052 |
1063 @see RSqlDatabase::FreeReservedSpace() |
1054 @see RSqlDatabase::FreeReservedSpace() |
1064 @see RSqlDatabase::GetReserveAccess() |
1055 @see RSqlDatabase::GetReserveAccess() |
1065 */ |
1056 */ |
1066 EXPORT_C void RSqlDatabase::ReleaseReserveAccess() |
1057 EXPORT_C void RSqlDatabase::ReleaseReserveAccess() |
1067 { |
1058 { |
1068 SQL_TRACE_BORDER(OstTrace1(TRACE_BORDER, RSQLDATABASE_RELEASERESERVEACCESS_ENTRY, "Entry;0x%X;RSqlDatabase::ReleaseReserveAccess", (TUint)this)); |
1059 SQLUTRACE_PROFILER(this); |
1069 __SQLTRACE_BORDERVAR(TInt err =) Impl().Session().SendReceive(ESqlSrvDbReleaseReserveAccess); |
1060 Impl().Session().SendReceive(ESqlSrvDbReleaseReserveAccess); |
1070 SQL_TRACE_BORDER(OstTraceExt2(TRACE_BORDER, RSQLDATABASE_RELEASERESERVEACCESS_EXIT, "Exit;0x%X;RSqlDatabase::ReleaseReserveAccess;err=%d", (TUint)this, err)); |
|
1071 } |
1061 } |
1072 |
1062 |
1073 /** |
1063 /** |
1074 Returns a reference to the implementation object of RSqlDatabase - CSqlDatabaseImpl. |
1064 Returns a reference to the implementation object of RSqlDatabase - CSqlDatabaseImpl. |
1075 |
1065 |