2012-07-31 111 views
0

已經建立了一個存儲適配器(上下文)以幫助創建和管理單個數據庫和表。嘗試從新線程訪問表以讀取記錄並在後臺通過HTTP傳輸它們。對數據庫的其他訪問權限是基於活動的,只能插入。雖然數據很小,但線程可能會根據可能記錄的數量運行幾秒鐘。沒有必要回傳給用戶界面。從線程訪問sqllite db

StorageAdapter類(SQL精簡版設置)

private static SQLiteDatabase db; 
private Context context; 
private StorageOpenHelper dbHelper; 

public StorageAdapter(Context _context) { 
    this.context = _context; 
    dbHelper = new StorageOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

從以下螺紋的錯誤信息是: 「構造StorageAdapter(工人)是不確定的」

這裏是螺紋:

public void run() { 
    // Does Storage Adapter need to be runnable   
    // Read DB ID's of committed (1) records into array 
    **StorageAdapter storageAdapter = new StorageAdapter(this);** 
    storageAdapter.open(); 
    cursor = storageAdapter.queueCommID(); 
    int i = 0; 
    int currcnt = cursor.getCount(); 
    if (cursor.getPosition() == -1) cursor.moveToFirst(); 
    while (i < currcnt) { 
    // Send single record to server 
    sendrec(cursor); 
i=i+1; 
cursor.moveToNext(); 
    } 
    storageAdapter.close(); 
    stop(); 
}; 

當然希望我沒有混淆每個人。一直追着我的尾巴幾天,我很困惑。謝謝你的幫助。

回答

0

看起來好像你是從一個Worker實例中創建你的StorageAdapter實例。這意味着這個引用Worker而不是Context。如果你的工作人員是匿名的班級,你可以使用類似MyActivity.this而不是隻有這個

+0

追趕那一個也沒有積極的結果。仍然無法創建存儲適配器的實例來查詢表並從存儲適配器獲取光標。 – Butch 2012-08-01 01:08:52

+0

工人是一個公共的和延伸的線程。 – Butch 2012-08-01 02:29:13

+0

那麼你現在將一個上下文傳遞給StorageAdapter構造函數?什麼是錯誤? – SimonSays 2012-08-01 05:59:27