2012-07-31 3 views
0

Vous devez configurer un adaptateur de stockage (contextuel) pour vous aider à créer et à gérer une base de données et une table uniques. Essayer d'accéder à la table à partir d'un nouveau thread pour lire les enregistrements et les transmettre via HTTP en arrière-plan. Les autres accès à la base de données sont basés sur l'activité et insérés uniquement. Bien que les données soient petites, le thread peut s'exécuter quelques secondes en fonction du nombre d'enregistrements possibles. Il n'est pas nécessaire de communiquer avec l'interface utilisateur.Accès à sqllite db à partir d'un thread

StorageAdapter classe (SQL Lite Configuration)

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); 
} 

Le message d'erreur du fil ci-dessous est la suivante: "Le constructeur StorageAdapter (travailleur) est indéfini"

Voici le fil:

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(); 
}; 

Sûr j'espère que je n'ai pas confondu tout le monde. Été chassant ma queue pendant quelques jours et je suis très confus. Merci pour toute aide.

Répondre

0

semble que vous créez votre instance StorageAdapter à partir d'une instance Worker. cela signifie que le fait référence à un travailleur au lieu d'un contexte. Dans le cas où votre travailleur est une classe anonyme, vous pouvez utiliser quelque chose comme MyActivity.this au lieu de seulement ce.

+0

Poursuivi celui-là aussi sans résultat positif. Impossible de créer une instance de l'adaptateur de stockage pour interroger la table et récupérer le curseur de l'adaptateur de stockage. – Butch

+0

Travailleur est un public et étend thread. – Butch

+0

alors passez-vous un contexte au constructeur StorageAdapter maintenant? Quelle est l'erreur? – SimonSays

Questions connexes