插入两个具有不同列的表,可以吗? Android Studio

时间:2018-09-21 02:16:56

标签: android database android-sqlite

是否可以一次添加两个表? 当我单击按钮时,代码将运行

try {
                    SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(Donation_Page.this);
                    SharedPreferences.Editor editor = app_preferences.edit();
                    int i = app_preferences.getInt("key", 0);
                    i = ++i;
                    txn.setTxnNo(i + "");
                    SQLiteDatabase db = dbHelper.getWritableDatabase();
                    ContentValues cv = new ContentValues();
                    cv.put("name", txn.getName());
                    //cv.put("TxnNo", txn.getTxnNo());
                    cv.put("TxnNo", String.format("%04d", i));
                    cv.put("TxnDate", txn.getTxnDate());
                    cv.put("Amount", txn.getAmount().toPlainString());
                    cv.put("Description1", txn.getDescription1());
                    cv.put("Description2", txn.getDescription2());
                    editor.putInt("key", i).commit();
                    db.insert("Donation_Details", null, cv);

                    db.close();
                    Toast.makeText(Donation_Page.this, "Add successfully", Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }

以上代码将存储在一个表中,该表为“ Donation_Details”。但是我还有一个表是“ Information”,其中一列是“ Last txn no”。我也想cv.put。但这是在“信息”表中,而不是在“ Donation_Details”中。 db.insert("Donation_Details", null, cv);只能写一次。那么,如何在其中添加一个表呢?有可能吗?

这是我的更新

在这行代码之后。显示错误getLastTxnNo() in SettingModel cannot be applied to java. lang. String

try {

                    SQLiteDatabase db = dbHelper.getWritableDatabase();
                    ContentValues cv = new ContentValues();
                    cv.put("name", txn.getName());
                    cv.put("TxnDate", txn.getTxnDate());
                    cv.put("Amount", txn.getAmount().toPlainString());
                    cv.put("Description1", txn.getDescription1());
                    cv.put("Description2", txn.getDescription2());
                    db.insert("Donation_Details", null, cv);
                    db.close();

                    SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(Donation_Page.this);
                    SharedPreferences.Editor editor = app_preferences.edit();
                    int i = app_preferences.getInt("key", 0);
                    i = ++i;
                    txnSec.getLastTxnNo(i + "");
                    SQLiteDatabase dbSec = dbHelper.getWritableDatabase();
                    ContentValues cvSec = new ContentValues();
                    cvSec.put("TxnNo", String.format("%04d", i));
                    editor.putInt("key", i).commit();
                    dbSec.insert("Information", null, cvSec);
                    dbSec.close();

                    Toast.makeText(Donation_Page.this, "Add successfully", Toast.LENGTH_SHORT).show();
                } catch (Exception e) {
                    e.printStackTrace();
                }

错误显示在“ txnSec.getLastTxnNo(i + "");”行,但是无论是String还是Int也可以应用,为什么?

2 个答案:

答案 0 :(得分:1)

首先,检查Donation_Details表和Information表之间的关系。 其次,“那么,如何在其中添加一个表呢?”不清楚。

我的建议,请如下创建另一个新的SQLiteDatabase对象,然后尝试其余的操作。

SQLiteDatabase dbNew = dbHelper.getWritableDatabase();
ContentValues cvNew = new ContentValues();
cvNew.put("Last txn no", txn.getTxnNo());
dbNew.insert("Information", null, cvNew);

dbNew.close();

请根据您的要求更新cvNew.put("Last txn no", txn.getTxnNo());这一行。

谢谢。

答案 1 :(得分:0)

您必须打两次电话,但是如果您希望同时更新表,请将它们放入事务中。