我正在尝试做两个SQLite表,一个用于输入数据,另一个用于检索计算数据。
首先,我想让客户输入一些REAL数据,然后在后台计算并将新数据放到textview中。
目前,我试图从一张桌子中检索它。
@Override
public void onCreate(SQLiteDatabase db) {
String sSQL;
sSQL = "CREATE TABLE " + DataContract.TABLE_NAME +
"(" +
DataContract.Columns._ID + " INTEGER PRIMARY KEY NOT NULL, " +
DataContract.Columns.PRODUCT_NAME + " TEXT, " +
DataContract.Columns.PRODUCT_WIDTH + " REAL, " +
DataContract.Columns.PRODUCT_LENGHT+ " REAL, " +
DataContract.Columns.PRODUCT_PRICE+ " REAL, " +
//This is the data I want to calculate and put to a textview in a
//new intent
DataContract.Columns.PRODUCT_TOTAL_PRICE + " REAL)";
Log.d(TAG,sSQL);
db.execSQL(sSQL);
}
我有一个Serializable类,我试图计算这个类中的数据。
private final String ProductName;
private final double ProductLenght;
private final double ProductWidth;
private final double ProductPrice;
private final double ProductTotalPrice;
然后我尝试用getter方法计算数据。
public double getProductTotalPrice() {
return (getProductWidth() * getProductLenght() * getProductPrice())/1000;
}
但是,我不知道如何将计算出的数据检索回文本视图。
我应该创建两个表还是一个表足以进行此操作?
还有什么最简单的方法来计算Java代码中的数据并将其放回列中?
谢谢!
答案 0 :(得分:1)
还有什么是计算Java代码中数据的最简单方法 并把它放回专栏?
什么都不做(即在提取数据时计算值并减少数据库中存储的数据量)
要为计算值添加另一列将是一种浪费,因为您可以在提取数据时计算该值(到光标中),例如: -
假设表格(称为 myproducts )填充如下(请注意,不需要PRODUCT_TOTAL_PRICE列): -
然后使用查询提取它: -
SELECT
_ID,
PRODUCT_NAME,
PRODUCT_WIDTH,
PRODUCT_LENGTH,
PRODUCT_PRICE,
(PRODUCT_WIDTH * PRODUCT_LENGTH * PRODUCT_PRICE)/1000 AS CALCULATED_TOTAL_PRICE
FROM myproducts;
将导致: -
您可以在数据库助手中使用方法,例如: -
public double Cursor getTotalpriceBtId(long id) {
double rv = 0;
String column_name = "totalprice";
String calculation = "(" +
DataContract.Columns.PRODUCT_WIDTH + " * " +
DataContract.Columns.PRODUCT_LENGHT + " * " +
DataContract.Columns.PRODUCT_PRICE + ")/1000";
String[] columns = new String[]{calculation + " AS " + column_name};
String whereclause = DataContract.Columns._ID + "=?";
String[] whereargs = new String[]{String.valueOf(id)};
Cursor csr = this.getWritableDatabase().query(
DataContract.TABLE_NAME,
columns,
whereclause,
whereargs,
null,null,null
);
if (csr.moveToFirst) {
rv = csr.getDouble(csr.getColumnIndex(column_name));
}
csr.close();
return rv;
}
但是,我不知道如何将检索到的计算数据 textview。
以下内容: -
yourTextView.setText(String.valueOf(yourDBHelperInstance.getTotalpriceBtId(ID_OF_THE PRODUCT)));
或者也许: -
yourTextView.setText(String.valueOf(yourproduct.getProductTotalPrice()));
答案 1 :(得分:0)
无需创建两个表 将值插入表后,您只需通过以下查询
创建一个函数从yourtablename中选择sum(您的列名),其中条件是您过滤数据的条件。