вставить две таблицы с другим столбцом, это возможно?андроид студия - PullRequest
0 голосов
/ 21 сентября 2018

Можно ли добавить две таблицы за один раз?Когда я нажимаю кнопку, код запускается следующим образом:

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".Но у меня все еще есть еще одна таблица «Информация», в которой есть один столбец: «Последний раз нет».Я тоже хочу 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 голосов
/ 21 сентября 2018

Сначала проверьте взаимосвязь между таблицей 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()); эту строку в соответствии с вашими требованиями.

Спасибо.

0 голосов
/ 21 сентября 2018

Вам нужно сделать два вызова, но если вы хотите, чтобы таблицы обновлялись одновременно, поместите их в транзакцию.

...