persistentstorage/sql/TEST/t_sqlprivcage.cpp
branchRCL_3
changeset 11 211563e4b919
parent 8 fa9941cf3867
equal deleted inserted replaced
10:31a8f755b7fe 11:211563e4b919
     1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2006-2010 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".
   240 	err = db.Create(_L("C:[21212122]BBDb2.db"));
   240 	err = db.Create(_L("C:[21212122]BBDb2.db"));
   241 	TEST2(err, KErrArgument);//secure database name, no security policy
   241 	TEST2(err, KErrArgument);//secure database name, no security policy
   242     //Very long private database name
   242     //Very long private database name
   243     err = db.Create(_L("c:\\private\\21212124\\hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.db"));
   243     err = db.Create(_L("c:\\private\\21212124\\hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.db"));
   244     TEST2(err, KErrBadName);
   244     TEST2(err, KErrBadName);
       
   245     //Private database name without drive letter
       
   246     err = db.Create(_L("\\private\\21212124\\dbname_no_drive_letter.db"));
       
   247     TEST2(err, KErrBadName);
   245     //Zero length private database name
   248     //Zero length private database name
   246     err = db.Create(_L(""));
   249     err = db.Create(_L(""));
   247     TEST2(err, KErrBadName);
   250     TEST2(err, KErrBadName);
   248     //Private database + very long config string
   251     //Private database + very long config string
   249     _LIT8(KVeryLongConfig, "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
   252     _LIT8(KVeryLongConfig, "jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj");
   300 	TEST(err >= 0);	
   303 	TEST(err >= 0);	
   301 	err = db2.Exec(_L8("INSERT INTO A(ID, T) VALUES(1, 'NAME-NAME-NAME')"));
   304 	err = db2.Exec(_L8("INSERT INTO A(ID, T) VALUES(1, 'NAME-NAME-NAME')"));
   302 	TEST2(err, 1);
   305 	TEST2(err, 1);
   303 	db2.Close();
   306 	db2.Close();
   304 
   307 
   305 	//Open database 1, attach database 2
   308 	//Open database 1
   306 	RSqlDatabase db;
   309 	RSqlDatabase db;
   307 	err = db.Open(KTestDb1);
   310 	err = db.Open(KTestDb1);
   308 	TEST2(err, KErrNone);
   311 	TEST2(err, KErrNone);
       
   312 	//An attempt to attach a database with zero length name
       
   313     err = db.Attach(_L(""), _L("Db2"));
       
   314     TEST2(err, KErrBadName);
       
   315     //Attach database 2
   309 	err = db.Attach(KTestDb2, _L("Db2"));
   316 	err = db.Attach(KTestDb2, _L("Db2"));
   310 	TEST2(err, KErrNone);
   317 	TEST2(err, KErrNone);
   311 
   318 
   312 	//Insert some records
   319 	//Insert some records
   313 	err = db.Exec(_L8("BEGIN IMMEDIATE TRANSACTION"));
   320 	err = db.Exec(_L8("BEGIN IMMEDIATE TRANSACTION"));
   347 	err = stmt.Next();
   354 	err = stmt.Next();
   348 	TEST2(err, KSqlAtEnd);
   355 	TEST2(err, KSqlAtEnd);
   349 	stmt.Close();
   356 	stmt.Close();
   350 	db.Close();
   357 	db.Close();
   351 		
   358 		
       
   359     //Open database 1, attach read-only database 2
       
   360     err = db.Open(KTestDb1);
       
   361     TEST2(err, KErrNone);
       
   362     //Make database 2 read-only.
       
   363     err = TheFs.SetAtt(KTestDb2, KEntryAttReadOnly, 0);
       
   364     TEST2(err, KErrNone);
       
   365     //Attach database 2
       
   366     err = db.Attach(KTestDb2, _L("Db2"));
       
   367     TEST2(err, KErrNone);
       
   368     //
       
   369     err = db.Exec(_L("INSERT INTO Db2.A(ID, T) VALUES(3, 'AAA')"));
       
   370     TPtrC errmsg = db.LastErrorMessage();
       
   371     TheTest.Printf(_L(" === Read-only private attached database. Msg=%S, err=%d\r\n"), &errmsg, err);
       
   372     TEST(err != KErrNone);
       
   373     TSqlScalarFullSelectQuery q(db);
       
   374     TBuf<20> text2;
       
   375     TRAP(err, q.SelectTextL(_L("SELECT T FROM Db2.A WHERE ID=2"), text2));
       
   376     TEST2(err, KErrNone);
       
   377     TEST(text2 == _L("AAA"));
       
   378     //
       
   379     err = db.Detach(_L("Db2"));
       
   380     TEST2(err, KErrNone);
       
   381     err = TheFs.SetAtt(KTestDb2, 0, KEntryAttReadOnly);
       
   382     TEST2(err, KErrNone);
       
   383     db.Close();
       
   384     
   352 	err = RSqlDatabase::Delete(KTestDb2);
   385 	err = RSqlDatabase::Delete(KTestDb2);
   353 	TEST2(err, KErrNone);
   386 	TEST2(err, KErrNone);
   354 	err = RSqlDatabase::Delete(KTestDb1);
   387 	err = RSqlDatabase::Delete(KTestDb1);
   355 	TEST2(err, KErrNone);
   388 	TEST2(err, KErrNone);
   356 	}
   389 	}