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);
}
}
我在另一项活动中进行了调查,并且值将从该活动传递到此数据库活动。我正在考虑将调查中的答案作为字符串变量传递给数据库,然后数据库可以存储答案。
这是一种有效的方法吗?或者还有其他方法吗?内容提供商如何提供帮助?
答案 0 :(得分:1)
不太确定你的意思是“将它们作为字符串变量传递”。我所做的是在DatabaseHelper
中创建公共方法,并使用它们从其他活动向db添加记录。
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);
}
然后,当我想从另一个活动中添加这种类型的记录时,我只需这样做:
mDbHelper.createEventType(title, desc);
答案 1 :(得分:1)
有助于了解您计划在调查中提出多少问题,如何构建问题以及您是否计划及时更新调查问题(或者您对收集的数据做了什么? )。如果您计划在代码中插入六个以上的问题,那么数据库是一个很好的选择,同时将答案存储为Strings
是一个不错的选择(但这取决于您实际构建问题的方式)。 / p>
如果问题的数量非常少(并且不打算更新调查,或者是一次性调查),您也可以将它们存储在内部存储上的文件中(它将是私有的,因此只有您的应用程序可以访问它。)
如果您打算将应用中的数据公开给用户手机上安装的其他应用,则ContentProvider
非常有用。我怀疑您是否计划将该调查的结果公开给其他已安装的应用,因此ContentProvider
不应该让您感兴趣。