Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

hxtt dbf driver, we need hours to perform delete with million records

843859Mar 22 2006 — edited Apr 7 2006
i used hxtt driver for performing dbf operations, so far working well except it takes hours (or maybe days) to execute delete/insert with million datas. In fact i never seen its result because it takes more than 20 hours to perform delete some records of 1800907 datas. So, i don't know, the action finish completely with hours or it just never ending process ?

below i post my code :
import java.util.*;
import java.sql.*;
import java.io.*;
import com.hxtt.sql.*;

public class TestDbf {
    
    Connection connection;
    /** Creates a new instance of TestDbf */
    public TestDbf(String path) {
        Properties prop = new Properties();
        prop.setProperty("user", "");
        prop.setProperty("OtherExtensions","true");
        prop.setProperty("Version Number", "03");        
        try {
            Class.forName("com.hxtt.sql.dbf.DBFDriver").newInstance();
            connection = DriverManager.getConnection("jdbc:DBF:///"+path, prop); 
        }
        catch(SQLException sqx) {
            System.out.println("SQL Error when connecting to database");
            sqx.printStackTrace();
        }
        catch (ClassNotFoundException cfx) {
            System.out.println("could ot find HXTT class, make sure the classpath have been defined in your system !");
            cfx.printStackTrace();
        }          
        catch(Exception e) {
            e.printStackTrace();
        }        
    }
    
    public void createIndex(String tablename, String colname, String idxname) {
        try {
            Statement stmt = connection.createStatement();
            String sqlIndex = "create index "+idxname+" on \""+tablename+"\" ("+colname+")";
            boolean isCreated = stmt.execute(sqlIndex);
            stmt.close();
        }
        catch(SQLException sqx) {
            sqx.printStackTrace();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public void deleteData(String tablename) {
        try {
            Statement stmt = connection.createStatement();
            String sql = "delete from \""+tablename+"\" where exists (select 'x' from pp where trim(wcode)='54' and kdpp = 

kdppx)";
            boolean isDeletedKdpp1 = stmt.execute(sql);
            stmt.close();
        }
        catch(SQLException sqx) {
            sqx.printStackTrace();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] arg) {
        TestDbf dbf = new TestDbf("C:\\TestDbf");
        dbf.createIndex("71280206.PH8", "kdppx", "KDPPIDX71280206");
        dbf.deleteData("71280206.PH8");
    }
    
}
in above code, user just perform creating index and deleting data which involved two tables, pp.dbf (6045 records) and 71280206.PH8 (1800907 records). SQL Statement for delete action is just :
"delete from "71280206.PH8" where exists (select 'x' from pp where trim(wcode)='54' and kdpp = kdppx)".

why this action needs hours or days or hang ? (after it ran 20 hours i closed the application, so i don't know exactly when
the application will finish completely).

regards,
rtery

Comments

Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on May 5 2006
Added on Mar 22 2006
12 comments
240 views