0


我编写了简单的 java 程序,它从文件“.xls”中读取数据并将这些数据存储到本地数据库 sqlite 中。关于通过 Ubuntu 12.04 和 Mac OSX 存储这些数据所需的时间,我一直有一些问题。我已经验证了这些操作(插入行)使用 Ubuntu(大约 15 分钟)比 Mac OSX(大约 32 秒)花费的时间要长得多。
有人可以帮我解决问题吗?

下面我附上了我的代码。PS:对不起我的英语。

主.java

public static void main(String[] args) 
    throws IOException, BiffException, ClassNotFoundException, SQLException, WriteException {

    Main obj = new Main();

    if(!Database.access().exists()) {
        Database.access().connect("Proteomic.db");
        System.out.println("Uploading data from workSheets to database...");            
        obj.storeSheets("/Users/.../Desktop/File nurr1 vs ctrl-1"+".xls");
    }
    ...

方法 storeSheets

    public void storeSheets(String path) throws IOException, BiffException, SQLException
    {
    Workbook workbook = Workbook.getWorkbook(new File(path));
    String intestazione = new String();

    number_sheets = workbook.getNumberOfSheets();

    for(int k=0;k<number_sheets;k++)
    {
        Sheet sheet = workbook.getSheet(k);
        String s_name = sheet.getName();

        int numeroRighe = sheet.getRows();
        int numeroColonne = sheet.getColumns();           

        ...
        ...

        Database.access().createTable(s_name); 

        for(int i=1;i<numeroRighe;i++) {
            cond=false; //condizione necessaria per non inserire righe parzialmente vuote
            for(int j = 0; j <= numeroColonne; j++)  {
                ...
                ...
            }
            //query per l'inserimento
            if(cond==true) {
                val.add("NULL");
                Database.access().insertRow(s_name,val); //insert operation
                val.clear();
            }
        }
    }
}

类 Database.java

public class Database {

...
...
//other attributes and methods

public void insertRow(String name,ArrayList<String> vv) throws SQLException {

    Statement stat=(Statement) con.createStatement();
    String str1="INSERT INTO "+name+" "+"VALUES(";

    for(int i=0;i<vv.size();i++) {
        if(i==vv.size()-1)
            str1+=vv.get(i);
        else
            str1+=vv.get(i)+",";
    }
    str1+=")";

    stat.executeUpdate(str1);
}

谢谢大家帮助我。

4

0 回答 0