[英]SQLite problem with getting the higher value of a specific column
我正在創建一個航班計划應用程序,用戶可以在其中創建多個航班,每個航班都有自己的費用報告。 對於用戶創建的每個航班,每個用戶都會有一個按鈕,可以AddExpenses.class
按鈕打開另一個名為AddExpenses.class
活動,並且該類用戶將能夠為該特定旅程添加多個費用。
由於這種解釋很長,可能會有點混亂,因此我使用的是指該表。 例如,(航班)將引用航班表。
我有兩個表,一個表是(航班),另一個表是(交易)。 每個檔次可以有很多交易記錄(交易),但是當用戶查看(交易)中的所有內容時,我無法顯示主鍵,因為對於(交易)表,主鍵名為transactions_id,並且它會自動遞增。
這是一個問題,因為如果FIRST廣告投放中添加了3條交易記錄,則將在(transactions)表中添加3行,而transaction_id為1,2,3。 並且當用戶從SECOND航班添加交易時,作為主鍵的transaction_id不會從1開始,而是從4繼續……等等。
因此,我嘗試在我的(交易)表中添加2個其他列,分別是id_shown和flightposition_id。 如果用戶添加來自其他排期的交易記錄,則“ id_shown”列將循環並從1重新開始。 並且“ flightposition_id”僅顯示(交易)中的交易記錄的哪些行在(航班)中特定的“ flight_id”之下,以便當他們查看特定航班的記錄時,我可以在(交易)中顯示正確的交易記錄。
這是我的DatabaseHelper類中的onCreate方法,它為我的(事務)表擴展了SQLiteOpenHelper:-
db.execSQL("CREATE TABLE " + TRANSACTION_TABLE + "(ID INTEGER PRIMARY KEY AUTOINCREMENT, AMOUNT DOUBLE NOT NULL, CATEGORY TEXT NOT NULL, NOTE TEXT, TRANSACTION_ID TEXT NOT NULL, FLIGHT_ID INTEGER NOT NULL, FOREIGN KEY (FLIGHT_ID) REFERENCES FLIGHT_TABLE(id) )");
這是我的“ AddExpenses”類中的添加按鈕,用於添加更多交易:-
public void AddTransactions (final String flightposition_id) {
button_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myDb.getTransactionData()
boolean isInserted = myDb.insertTransactionData(amount.getText().toString(), category, note.getText().toString(), transaction_id, flightposition_id);
if (isInserted = true) {
Toast.makeText(AddExpenses.this, "Transaction Inserted !", Toast.LENGTH_LONG).show();
clearText();
}
else {
Toast.makeText(AddExpenses.this, "Transaction not Inserted !", Toast.LENGTH_LONG).show();
}
textView_id.setText(transaction_id);
}
});
}
現在,我從我的MainActivity傳遞了Flightposition_id,該ID將RecyclerView.Adapter擴展到“ AddExpenses”類:
button_addexpenses.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Context context = v.getContext();
Intent intent = new Intent(context, AddExpenses.class);
intent.putExtra("Position", getAdapterPosition());
context.startActivity(intent);
}
});
一切都很好,現在我只遇到一個問題,如果我試圖從SECOND航班中添加交易記錄,我希望我的應用檢查(交易)中所有包含“ flightposition_id”列且其值為與我所在的位置相同(第二次飛行表示位置為“ 1”)。
對於Flight_position為“ 1”的所有(交易)行,我希望應用程序將我的下一個交易記錄添加到比最高或最新的“ id_shown”值高一個整數的位置。 如果最高值為4,則計數器將+1使其變為5,依此類推。
您能指導我,並給我一個簡短的代碼,告訴我應該在AddExpenses.class中添加到我的“按鈕”中的內容嗎? 我知道它的解釋很長,可能會造成混亂,感謝您花一百萬時間閱讀!
因此,您需要執行以下查詢:
"SELECT MAX(transaction_id) FROM transactions WHERE flight_id=" + position
如果我理解正確,
並獲取已經存儲在數據庫中的最大數量,然后將其遞增1並保存新行。
編輯:
Cursor transactionlatestid = myDb.getLatestTransactionID(temp_position);
if (transactionlatestid.getCount() == 0) {
temp_id = 1;
} else {
transactionlatestid.moveToFirst();
temp_id = transactionlatestid.getInt(0);
temp += 1;
}
String transaction_id = String.valueOf(temp_id);
您要增加temp
還是temp_id
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.