我编写了简单的 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);
}
谢谢大家帮助我。