Ich versuche, eine SQL-Android-Anwendung zu schreiben, die die Menge eines Inventars von einer Tabelle nimmt, um sie mit dem Preis des Elements in einer anderen Tabelle zu multiplizieren, um die Summe in einer anderen Spalte zu speichern. Basierend auf dem, was ich gelesen habe, scheint es ziemlich einfach zu sein, funktioniert aber nicht für mich. Ich habe mehrere Lösungen ausprobiert, aber an dieser Stelle habe ich den SQL-Code in eine separate Methode namens totalPrice() gestellt, die bei einem Klick in einer anderen Methode aufgerufen wird.Wie man SQL-Spalten aus 2 Tabellen multipliziert und in eine separate Spalte einfügt?
Ich habe eine andere Klasse, die die Methode innerhalb eines Tastendrucks aufruft.
public class AddInvoice extends AppCompatActivity {
Button addInvoice;
DbHelper db;
EditText date, cid, item, size, invID, quantity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_invoice);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
db = new DbHelper(this);
addInvoice = (Button) findViewById(R.id.btnAddToInvoice);
date = (EditText) findViewById(R.id.etDate);
cid = (EditText) findViewById(R.id.etCID);
item = (EditText) findViewById(R.id.ItemName);
size = (EditText) findViewById(R.id.etSize);
invID = (EditText) findViewById(R.id.etAddInventoryID);
quantity = (EditText) findViewById(R.id.etQuantity);
addInvoice.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
AddInvoice();
AddOrderedItem();
db.totalPrice();
date.setText("");
cid.setText("");
item.setText("");
size.setText("");
invID.setText("");
quantity.setText("");
}
}
);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public void AddOrderedItem() {
boolean isInserted = db.addOrderedItem(item.getText().toString(), size.getText().toString(), Integer.parseInt(invID.getText().toString()),
Integer.parseInt(quantity.getText().toString()));
db.totalPrice();
if (isInserted == true)
Toast.makeText(AddInvoice.this, "Item Inserted", Toast.LENGTH_SHORT).show();
else
Toast.makeText(AddInvoice.this, "Item not Inserted", Toast.LENGTH_SHORT).show();
}
public void AddInvoice(){
boolean isInserted = db.addInvoice(date.getText().toString(), cid.getText().toString());
if (isInserted == true)
Toast.makeText(AddInvoice.this, "Invoice Inserted", Toast.LENGTH_SHORT).show();
else
Toast.makeText(AddInvoice.this, "Invoice not Inserted", Toast.LENGTH_SHORT).show();
}
}
Nun, wenn ich den Code der Wert ausführen, die in der Gesamtpreis Spalte gespeichert wird, ist null. Danke für jede Hilfe.
Ja, aber es speichert immer noch "Null" in der Spalte. Könnte es daran liegen, wie ich den Cursor oder die rawQuery-Methode mache? Ich habe versucht, eine ContentValues.put-Methode zu verwenden, aber ich kann eine Methode nicht als zweiten Parameter verwenden, es sei denn ich wickle es in die valueOf() -Methode, die "[email protected] –
Vielleicht Ihr Problem speichert bezieht sich auf die Verwendung des Cursors Ich habe keine Erfahrung im Arbeiten mit Wunschcursorn, und ich schlage vor, sie überhaupt nicht zu benutzen, es sei denn, sie wird wirklich benötigt. – rxn1d