2012-07-31 80 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