2012-03-25 10 views
0
package nidhin.survey; 

import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DatabaseHelper extends SQLiteOpenHelper { 

static final String TABLE = "mygrades"; 
static final String NAME = "name"; 
static final String VALUE = "value"; 

DatabaseHelper(Context context) 
{ 
    super(context, "grades.sqlite", null, 1); 
} 

@Override 
public void onCreate(SQLiteDatabase db) 
{ 

    db.execSQL("CREATE TABLE " + TABLE + " (_id INTEGER PRIMARY KEY AUTOINCREMENT," + 
       " name TEXT, value REAL);"); 
    ContentValues cv = new ContentValues(); 

    cv.put(NAME, "1.Do you have a car"); 
    cv.put(VALUE, "yes"); 
    db.insert(TABLE, NAME, cv); 

    cv.put(NAME, "2.What is the make"); 
    cv.put(VALUE, "mazda"); 
    db.insert(TABLE, NAME, cv); 

    cv.put(NAME, "3.What is the year"); 
    cv.put(VALUE, "2010"); 
    db.insert(TABLE, NAME, cv); 

    cv.put(NAME, "4.What do you like about the car "); 
    cv.put(VALUE, "its fast"); 
    db.insert(TABLE, NAME, cv); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
{ 
    // TODO Auto-generated method stub 
    android.util.Log.w("mygrades", "Upgrading database, this will destroy all data"); 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE); 
    onCreate(db); 
} 

} 

Ich habe eine Umfrage in einer anderen Aktivität und die Werte werden von dieser Aktivität an diese Datenbankaktivität übergeben. Ich habe daran gedacht, die Antworten aus der Umfrage als String-Variablen an die Datenbank zu übergeben und dann kann die Datenbank die Antworten speichern.Variablen von einer Aktivität in eine Datenbank übertragen

Ist dies ein effizienter Weg? Oder gibt es einen anderen Weg, dies zu tun? Wie hilft ein Content Provider?

Antwort

1

Nicht ganz sicher, wie Sie "als String-Variablen übergeben" meinten. Was ich mache, ist öffentliche Methoden in DatabaseHelper zu erstellen und sie zu verwenden, um Datensätze aus anderen Aktivitäten zur Datenbank hinzuzufügen.

public long createEventType(String eventType, String eventTypeDesc) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(EVENTTYPE_NAME, eventType); 
    initialValues.put(EVENTTYPE_DESC, eventTypeDesc); 
    return mDb.insertWithOnConflict(EVENTTYPE_TABLE, null, initialValues, 
      SQLiteDatabase.CONFLICT_IGNORE); 
} 

Dann, wenn ich diese Art der Aufzeichnung von einer anderen Aktivität hinzufügen möchte ich dies einfach tun:

mDbHelper.createEventType(title, desc);

1

Es würde helfen, zu wissen, wie viele Fragen planen Sie in der Umfrage haben , wie bauen Sie die Fragen auf und planen Sie, die Umfrage rechtzeitig mit neuen Fragen zu aktualisieren (oder was tun Sie mit diesen Daten, die Sie sammeln)? Eine Datenbank ist eine gute Option, wenn Sie mehr als die sechs Fragen haben, die Sie in Ihren Code eingefügt haben. Speichern Sie auch die Antworten als Strings ist eine gute Option (aber es hängt davon ab, wie Sie die Fragen tatsächlich erstellen).

Wenn die Anzahl der Fragen wirklich klein ist (und nicht planen, die Umfrage zu aktualisieren, oder es ist eine einmalige Umfrage), könnten Sie sie auch in einer Datei auf dem internen Speicher speichern (es wird nur Ihre private App wird Zugriff darauf haben).

Ein ContentProvider ist wirklich nützlich, wenn Sie beabsichtigen, Daten von Ihrer App für andere Apps verfügbar zu machen, die auf dem Benutzertelefon installiert sind. Ich bezweifle, dass Sie planen, die Ergebnisse dieser Umfrage zu anderen installierten Anwendungen zu veröffentlichen, so dass die ContentProvider Sie nicht interessieren sollte.

+0

danke für deine antwort, ich denke nicht, dass ich einen content-provider brauche, da ich keine daten auf andere apps übertragen werde. –

+0

Die Antworten, die ich habe, sind lang, nur ein paar Wörter oder Zahlen –

+0

Ich habe nur 12 Fragen –

Verwandte Themen