我有一个xml文件,如picture所示。我想要两件事,首先,我想使用arraylist(或任何方法)在onCreate方法的sqlite数据库中插入预定义的值。其次,我想使用arraylist中的那些值,现在在我的数据库中,填充两个微调器(Producer和Product)。
我有一个处理数据库连接和方法的数据库文件,这是我到目前为止所做的。这段代码在我的onCreate方法
中 db.execSQL("CREATE TABLE " + TABLE_PRODUCT + "("
+ PRODUCT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + PRODUCT_NAME + " TEXT,"
+ PRODUCER_FK + " INTEGER" + " FOREIGN KEY(PRODUCER_FK) REFERENCES TABLE_PRODUCER(PRODUCER_ID))");
ContentValues contentv=new ContentValues();
contentv.put("name", "Soya Seed");
getWritableDatabase().insert("TABLE_PRODUCT", null, contentv);
db.execSQL("CREATE TABLE " + TABLE_PRODUCER + "("
+ PRODUCER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + PRODUCER_NAME + " TEXT,"
+ PRODUCER_ADDRESS + " TEXT,"
+ PRODUCER_PHONE + " TEXT UNIQUE," + PRODUCER_EMAIL + " TEXT,"
+ CONTACT_PERSON + " TEXT" + ")");
ContentValues cv=new ContentValues();
cv.put("name", "ZamSEED");
cv.put("address", "Luanda");
cv.put("phone", "+244977654321");
cv.put("email", "demo@zamseed.com");
cv.put("contact_name", "Mr. Tembo");
getWritableDatabase().insert("TABLE_PRODUCER", null, cv);
然后我有一个库存文件,它从数据库中读取以从product和producer表中获取值以填充微调器。
我的挑战是如何判断我的db.execSQL是否真的成功? 我如何使用arraylist在数据库中插入值?
注意:当我运行它时应用程序运行正常,但我不确定是否创建了表并插入了值。我是Android编程的新手,谢谢。
答案 0 :(得分:1)
经过一段时间的研究,我发现这篇文章here让我看到了db.execSQL命令的实际表格和包含的数据。在Ubuntu
:
cd /path/to/my/sdk/platform-tools
./adb shell
run-as <app package name>
cd /data/data/<app package name>/databases
ls
chmod 666 <database file name>
sqlite3 <database file name>
> (semi-colon terminated commands can be run here to query the data)
> .exit
(copy full database path)
exit
然后使用sqlite3命令处理数据库> (semi-colon terminated commands can be run here to query the data)
答案 1 :(得分:0)
DatabaseHelper.java
public ArrayList<String>getProductList(){
ArrayList<String>products = new ArrayList<String>();
SQLiteDatabase qDB = getReadableDatabase();
String columns[]=new String[]{PRODUCT_NAME};
Cursor cursor = qDB.query(TABLE_PRODUCT,columns,null,null,null,null,null);
while (cursor.moveToNext()){
String produectName = cursor.getString(1);
products.add(productName);
Log.e("e",products);
}
return products;
}
<强> SomeActivity.java 强>
spinnerProducts = (Spinner) findViewById(R.id.spinnerProducts);
ArrayList<String>productsList = new DatabaseHelper(context).getProductsList();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1,productsList);
spinnerProducts.setAdapter(arrayAdapter);
...
//same logic for Producers list
答案 2 :(得分:0)
我的挑战是如何判断我的db.execSQL是否真的成功?
如果它没有抛出异常就成功了。
但是,在getWritableDatabase()
中调用onCreate()
是一个错误,因为这会导致递归:getWritableDatabase()
首先触发对onCreate()
的调用。您应该使用传递给您的SQLiteDatabase
作为参数。
如果您没有看到有关递归调用的异常,那么您已经拥有了具有正确版本的数据库文件。您可以卸载应用以清理其数据,然后重新安装并再次运行,以便再次运行onCreate()
。
我如何使用arraylist在数据库中插入值?
使用循环迭代列表并逐个插入值。