Em Sex, 2003-03-07 �s 10:21, Edson Carlos Ericksson Richter escreveu:
> Hi!
>  
> I'm need the following "workflow" correct running with SapDB:
>  
> Environment: User A and User B. User A will delete from times-to-times
> a large amount of data, and re-insert them using standalone Java app
> through JDBC. User B is connecting by JDBC from a Tomcat WEB Server
> (pool of 10 connections). SapDB 7.4.3.10 using latest sapdbc.jar from
> ftp.sap.com. I've tried User B as WebSQL with same results...
>  
> Steps (or Wish List):
>  
> 1) User B issue "select count(*) from MyTable", resulting in, let's
> say, 70000 records.
> 2) User A issue "begin transaction" (cnSap.setAutoCommit(false))
> 3) User A issue "delete from MyTable", deleting all records
> 4) User B issue "select count(*) from MyTable", resulting in 70000
> records again, because user A don't had commited commands
> 5) User A issue 90000 inserts. During this time, User B always see
> 70000 records, as in step 1, because user A don't commit.
> 6) User A commit (cnSap.commit())
> 7) User B see now 90000 records, because user A already commited.
>  
> Maybe I'm really wrong in my tests (and teory), but I've tested MS SQL
> Server, with two "Query Analizers", and sessions are isolated when
> using transactions...
>  
> I've tested a little program doing deletes, inserts and commits, but
> User B is being sensitive about changes in User A session...
>  
> Now, I'll drop some code I already tested to isolate user sessions
> (just don't work):
>  
> Test 1 (cnSap is already open, SQL mode Internal):
>  
>         try {
>             System.out.println("Start importing");
>             boolean autoCommit = cnSap.getAutoCommit();
> 
>             cnSap.setAutoCommit( false );
>  
>              // in real, I already tested all transaction types!
>             cnSap.setTransactionIsolation(
> java.sql.Connection.TRANSACTION_READ_COMMITTED );
>             
>             System.out.println("Deleting existing data");
>             stSap = cnSap.prepareStatement( "DELETE FROM MyTable" );
>             stSap.executeUpdate();
>             
>             stSap = cnSap.prepareStatement( "INSERT INTO MyTable ( C1,
> C2 ) VALUES ( ?, ? )" );
>             
>             int nRegistros = 0;
>             
>             while( nRegistros < 90000 ) {
>                 nRegistros++;
>  
>                 if( nRegistros % 1000.0 == 0 )
>                     System.out.println( "Records: " + nRegistros );
>  
>                 stSap.setInt( 1, nRegistros );
>                 stSap.setString( 2, "Something else" );
>                 stSap.addBatch( );
>             }
>             
>             System.out.println( "Records: " + nRegistros );
>             System.out.println("Executing batch!");
>             stSap.executeBatch();
>             System.out.println("Commit!");
>             cnSap.commit(); // Changes should be visible by User B
> only now!!!
>             cnSap.setAutoCommit( autoCommit );
>             System.out.println("End.");
>         } catch( Exception e ) {
>             try {
>                 cnSap.rollback();
>             } catch( Exception e1 ) {}
>  
>             e.printStackTrace( );
>             return;
>         } finally {
>             try {
>                 stSap.close();
>             } catch( Exception e1 ) {}
>             
>             // Connection still open for anything else...
>         }
> 
>  
> Can someone help me? What I'm doing wrong?
>  
> Thanks!
>  
> Edson Richter
>  
>  
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.459 / Virus Database: 258 - Release Date: 25/2/2003

_______________________________________________
sapdb.general mailing list
[EMAIL PROTECTED]
http://listserv.sap.com/mailman/listinfo/sapdb.general

Reply via email to