选择并计算列 - SQLite
问题描述:
你能告诉我这个代码有什么问题?选择并计算列 - SQLite
public Cursor IMC(){
Cursor cursor;
String[] campos = {"SELECT (peso/(altura*altura)) FROM medidas "};
db = banco.getReadableDatabase();
cursor = db.query(CriaBanco.TABELA_MEDIDAS, campos, null, null, null, null, null, null);
if(cursor!=null){
cursor.moveToFirst();
}
db.close();
return cursor;
}
(比索/(阿尔图拉*阿尔图拉)是列和 “MEDIDAS” 表...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.resultado__imc_layout);
BancoController crud = new BancoController(getBaseContext());
Cursor cursor = crud.IMC();
String[] nomeCampos = new String[] {"SELECT (peso/(altura*altura) FROM medidas "};
int[] idViews = new int[] {R.id.txtresultado_imc};
}
我试图显示TextView的在SELECT方程的结果“txtresultado_imc ” ......
下表代码
public class CriaBanco extends SQLiteOpenHelper {
private static final String NOME_BANCO = "banco.db";
private static final int VERSAO = 1;
static final String TABELA_MEDIDAS = "medidas";
static final String CODIGO = "codigo";
static final String ALTURA = "altura" ;
static final String PESO = "peso" ;
static final String CINTURA = "cintura" ;
static final String PESCOCO = "pescoco" ;
static final String QUADRIL = "quadril" ;
static final String GRAU_ATIVIDADE = "grau_atividade" ;
public CriaBanco(Context context) {
super(context, NOME_BANCO, null, VERSAO);
}
@Override
public void onCreate(SQLiteDatabase db) {
String medidas = "CREATE TABLE medidas ("
+ "codigo integer primary key autoincrement,"
+ "altura integer,"
+ "peso integer,"
+ "cintura integer,"
+ "pescoco integer,"
+ "quadril integer,"
+ "grau_atividade num)";
db.execSQL(medidas);
}
韩国社交协会!
答
在您的查询中右括号缺失。
使用此
"SELECT (peso/(altura*altura)) FROM medidas"
而不是
"SELECT (peso/(altura*altura) FROM medidas "
然后使用cursor
结果设置TextView
数据。
TextView tv = (TextView) findViewById(R.id.txtresultado_imc);
// set result
tv.setText(cursor.getString(cursor.getColumnIndex(0));)
// Remove these below lines, I don't know what you are trying to achieve with them. They are looking unused and unnecessary
String[] nomeCampos = new String[] {"SELECT (peso/(altura*altura) FROM medidas "};
int[] idViews = new int[] {R.id.txtresultado_imc};
为了使您的代码正常工作,您需要修改一个观察点。您的方法正在接受字符串,而列类型只允许插入整数值。
public String insereMedidas(String altura, String peso, String cintura, String pescoco, String quadril, String grau_atividade)
这应该是 -
public String insereMedidas(int altura, int peso, int cintura, int pescoco, int quadril, int grau_atividade)
交叉检查数据类型相同的所有列。同时从EditText获取文本将其转换为int
,但确保只允许数字值作为输入。
对于例如 -
int pesoValue = Integer.parseInt(Peso.getText().toString());
通行证上述值插入方法,做同样的所有输入。
欢迎的话,你的问题缺乏基本点即看这个怎么样代码应该做的,什么是目前发生这样添加这些细节加,如果有任何异常,那么请加入logcat的细节 –
至少有一个问题是,第二个解释在你的['query()'](https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html)语句中的参数应该是你想要返回的列。 – PPartisan
Pavneet辛格, 我需要选择采取列“比索”和“阿尔图拉”的值,并执行方程(比索/(阿尔图拉*阿尔图拉)),然后在TextView中显示...它不会被称为按钮,打开屏幕时,该值应该已经有.... –