你能告诉我这段代码有什么问题吗?
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;
}
(peso /(altura * altura)是列和“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“txtresultado_imc”中显示SELECT方程的结果......
表格代码
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);
}
韩国社交协会!
答案 0 :(得分:0)
在您的查询中,缺少结束括号。
使用此
"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());
将上述值传递给insert方法,对所有输入执行相同操作。