Java 用SQLite进行计算
我正在尝试创建两个SQLite表,一个用于输入数据,另一个用于检索计算数据 首先,我想让客户端输入一些真实数据,然后在后台进行计算,并将新数据放入textview 现在,我试图从一个表中检索它Java 用SQLite进行计算,java,android,sqlite,calculated-columns,calculation,Java,Android,Sqlite,Calculated Columns,Calculation,我正在尝试创建两个SQLite表,一个用于输入数据,另一个用于检索计算数据 首先,我想让客户端输入一些真实数据,然后在后台进行计算,并将新数据放入textview 现在,我试图从一个表中检索它 @Override public void onCreate(SQLiteDatabase db) { String sSQL; sSQL = "CREATE TABLE " + DataContract.TABLE_NAME + "(" +
@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);
}
我有一个可序列化的类,我试图计算这个类中的数据
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;
}
但是,我不知道如何将检索到的计算数据放回textview
我应该创建两个表还是一个表就足以执行此操作
还有,在Java代码中计算数据并将其放回列的最简单方法是什么
谢谢大家!
在Java代码中计算数据最简单的方法是什么
然后把它放回一列
不执行任何操作(即提取数据时计算值,并减少数据库中存储的数据量)
为计算值添加另一列将是一种浪费,因为您可以在提取数据(到光标中)时计算值,例如:-
假设该表(称为myproducts)按如下方式填充(注意不需要产品总价格列):-
然后使用查询将其提取:-
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;
}
- 底层SQL与上面的示例类似。但是,只需要一列
yourTextView.setText(String.valueOf(yourdhelperinstance.getTotalpriceBtId(产品的ID))代码>
或许:-
yourTextView.setText(String.valueOf(yourproduct.getProductTotalPrice()));
不需要创建两个表
将值插入表后,只需通过下面的查询创建一个函数
从TableName中选择sum(您的列名),根据该条件筛选数据。太好了。但这:(产品宽度*产品长度*产品价格)*.001作为计算的产品总价格
会稍微快一些(因为乘法比除法快)。因此,乘以预先计算的逆运算速度更快。