Android SQLite从活动获取用户id和数据
我在DataBaseHelper活动中有两个表,一个用于用户,另一个用于记录5个不同活动的测量值。我的DataBaseHelper具有addreaiding();获取数据。下面是来自DataHelper的代码Android SQLite从活动获取用户id和数据,android,database,sqlite,Android,Database,Sqlite,我在DataBaseHelper活动中有两个表,一个用于用户,另一个用于记录5个不同活动的测量值。我的DataBaseHelper具有addreaiding();获取数据。下面是来自DataHelper的代码 import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDataba
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
public class DatabaseHelper extends SQLiteOpenHelper {
// Database Version
private static final int DATABASE_VERSION = 1;
// Database Name
private static final String DATABASE_NAME = "UserManager.db";
// User table name
private static final String TABLE_USER = "user";
// Reading table name
private static final String TABLE_READING = "reading";
// User Table Columns names
private static final String COLUMN_USER_ID = "user_id";
private static final String COLUMN_USER_NAME = "user_name";
private static final String COLUMN_USER_EMAIL = "user_email";
private static final String COLUMN_USER_PASSWORD = "user_password";
//Readings Table Columns names
private static final String COLUMN_READING_USERREFERENCE = "reading_user_reference";
private static final String COLUMN_READING_DATETIME = "reading_datetime";
private static final String COLUMN_READING_WEIGHT = "reading_weight";
private static final String COLUMN_READING_AGE = "reading_age";
private static final String COLUMN_READING_HEIGHT = "reading_height";
private static final String COLUMN_READING_CALORIES_ = "reading_calories";
private static final String COLUMN_READING_BMR = "reading_bmr";
private static final String COLUMN_READING_BMI = "reading_bmi";
private static final String COLUMN_READING_BF = "reading_bf";
private static final String COLUMN_READING_FFMI = "reading_ffmi";
// create table users sql query
private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USER + "("
+ COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_USER_NAME + " TEXT,"
+ COLUMN_USER_EMAIL + " TEXT," + COLUMN_USER_PASSWORD + " TEXT" + ")";
// create table readings sql query
private static final String CREATE_READING_TABLE =
"CREATE TABLE IF NOT EXISTS " + TABLE_READING +
"(" +
COLUMN_READING_USERREFERENCE + " INTEGER NOT NULL, " +
COLUMN_READING_DATETIME + " TEXT DEFAULT CURRENT_TIMESTAMP, " +
COLUMN_READING_WEIGHT + " INTEGER," +
COLUMN_READING_AGE + " INTEGER , "+
COLUMN_READING_HEIGHT + " INTEGER," +
COLUMN_READING_CALORIES_ + " REAL," +
COLUMN_READING_BMR + " REAL," +
COLUMN_READING_BMI + " REAL," +
COLUMN_READING_BF + " REAL , "+
COLUMN_READING_FFMI + " REAL "+
")";
// drop table sql query
private String DROP_USER_TABLE = "DROP TABLE IF EXISTS " + TABLE_USER;
private String DROP_READING_TABLE = "DROP TABLE IF EXISTS " + TABLE_READING;
/**
* Constructor
*
* @param context
*/
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_USER_TABLE);
db.execSQL(CREATE_READING_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//Drop User Table if exist
db.execSQL(DROP_USER_TABLE);
db.execSQL(DROP_READING_TABLE);
// Create tables again
onCreate(db);
}
/**
* This method is to create user record
*
* @param user
*/
public void addUser(User user) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_USER_NAME, user.getName());
values.put(COLUMN_USER_EMAIL, user.getEmail());
values.put(COLUMN_USER_PASSWORD, user.getPassword());
// Inserting Row
db.insert(TABLE_USER, null, values);
db.close();
}
public long addReading(int userreference, long datetime, int age,int weight,int height, double calories,
double bmi, double bmr, double bf, double ffmi) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
cv.put(COLUMN_READING_USERREFERENCE,userreference);
cv.put(COLUMN_READING_DATETIME,sdf.format(datetime));
cv.put(COLUMN_READING_AGE,age);
cv.put(COLUMN_READING_WEIGHT,weight);
cv.put(COLUMN_READING_HEIGHT,height);
cv.put(COLUMN_READING_CALORIES_,calories);
cv.put(COLUMN_READING_BMR,bmr);
cv.put(COLUMN_READING_BMI,bmi);
cv.put(COLUMN_READING_BF,bf);
cv.put(COLUMN_READING_FFMI,ffmi);
return db.insert(TABLE_READING,null,cv) ;
}
我有两个主要问题。首先,在用户登录为READINGS表中的userreference键后,我将如何获取用户ID;其次,我将如何使用my activities中的addreading获取数据。例如,这是卡路里活动,我需要日期、年龄、身高、体重和卡路里结果。我假设其他字段(bmr、bmi、bf)应该默认为0
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import eu.healthydev.bodymeasure.R;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Calories extends BaseActivity implements AdapterView.OnItemSelectedListener{
Spinner sp, goal_sp;
double valofactlevel = 0;
int goalnum = 0;
Calendar calander;
SimpleDateFormat simpledateformat;
String Date;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calories);
TextView cal_pound_to_gram = (TextView)findViewById(R.id.cal_pounds_view);
EditText weight_num = (EditText) findViewById(R.id.cal_weight_num);
DatabaseHelper databaseHelper = new DatabaseHelper(this);
databaseHelper.addReading( );
if (MainActivity.unit_is_gram){
cal_pound_to_gram.setText("Kilograms");
}
if(MainActivity.unit_is_meter){
TextView cal_inches_to_cent = (TextView)findViewById(R.id.cal_inches_view);
cal_inches_to_cent.setText("Centimeters");
//cal_inches_to_cent.setWidth(200);
EditText cent_num = (EditText)findViewById(R.id.cal_inches_num);
cent_num.setWidth(595);
TextView cal_feet_to_meter = (TextView)findViewById(R.id.cal_feet_view);
cal_feet_to_meter.setText(""); //meters
EditText cal_disappear = (EditText)findViewById(R.id.cal_feet_num);
cal_disappear.setVisibility(View.INVISIBLE);
}
Button resetButt = (Button)findViewById(R.id.cal_reset_button);
resetButt.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
EditText weight_num_reset = (EditText) findViewById(R.id.cal_age_num);
weight_num_reset.setText(null);
EditText waist_num_reset = (EditText) findViewById(R.id.cal_weight_num);
waist_num_reset.setText(null);
EditText wrist_num_reset = (EditText) findViewById(R.id.cal_feet_num);
wrist_num_reset.setText(null);
EditText hip_num_reset = (EditText) findViewById(R.id.cal_inches_num);
hip_num_reset.setText(null);
TextView bf_answer_reset = (TextView) findViewById(R.id.cal_answer);
bf_answer_reset.setText("");
}
}
);
sp = (Spinner) findViewById(R.id.cal_actlevel_list);
ArrayAdapter adapter = ArrayAdapter.createFromResource(this,R.array.levelofact,android.R.layout.simple_spinner_item);
sp.setAdapter(adapter);
sp.setOnItemSelectedListener(this);
goal_sp = (Spinner) findViewById(R.id.cal_goal_spinner);
ArrayAdapter goal_adapter = ArrayAdapter.createFromResource(this,R.array.goalsarr,android.R.layout.simple_spinner_item);
goal_sp.setAdapter(goal_adapter);
goal_sp.setOnItemSelectedListener(this);
Button calculate_calories_button = (Button)findViewById(R.id.calc_calories_button);
calculate_calories_button.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
EditText age_num = (EditText) findViewById(R.id.cal_age_num);
String age_s = (age_num.getText().toString());
double age;
if(TextUtils.isEmpty(age_s)){
age_num.setError("Field can't be empty");
age = 0;
return;
}
age = Integer.parseInt(age_num.getText().toString());
EditText weight_num = (EditText) findViewById(R.id.cal_weight_num);
String weight_s = (weight_num.getText().toString());
double weight = 0;
if(TextUtils.isEmpty(weight_s)){
weight_num.setError("Field can't be empty");
weight = 0;
return;
}
weight = Integer.parseInt(weight_num.getText().toString());
double feet = 0;
if (!MainActivity.unit_is_meter){
EditText feet_num = (EditText) findViewById(R.id.cal_feet_num);
String feet_s = feet_num.getText().toString();
if(TextUtils.isEmpty(feet_s) && !MainActivity.unit_is_meter){
feet_num.setError("Field can't be empty");
feet = 0;
return;
}
feet = Integer.parseInt(feet_num.getText().toString());
}
EditText inch_num = (EditText) findViewById(R.id.cal_inches_num);
String inch_s = inch_num.getText().toString();
double inches;
if(TextUtils.isEmpty(inch_s)){
inch_num.setError("Field can't be empty");
inches = 0;
return;
}
inches = Integer.parseInt(inch_num.getText().toString());
RadioGroup rad_group = (RadioGroup)findViewById(R.id.cal_radioGroup);
int check = rad_group.getCheckedRadioButtonId();
if (check == -1){
Toast.makeText(Calories.this, "Select gender", Toast.LENGTH_SHORT).show();
}
RadioButton fem_button = (RadioButton) findViewById(R.id.cal_fem_button);
boolean fem = fem_button.isChecked();
RadioButton male_button = (RadioButton) findViewById(R.id.cal_male_button);
boolean male = male_button.isChecked();
TextView calResult = (TextView) findViewById(R.id.cal_answer);
double bmrr = doCalories(fem, male, age, weight, feet, inches);
bmrr = (bmrr*valofactlevel)+goalnum;
String bmrstring = "";
bmrstring = String.valueOf(Math.round(bmrr));
if (goalnum == 0){
bmrstring = bmrstring.concat(" calories to maintain weight.");
}
else if (goalnum > 0){
bmrstring = bmrstring.concat(" calories to gain weight.");
}
else if (goalnum < 0){
bmrstring = bmrstring.concat(" calories to lose weight.");
}
if (check != -1){
calResult.setText(bmrstring);
}
}
}
);
}
public double doCalories(boolean fem, boolean male, double age, double weight, double feet, double inches){
double bmrResult = 0;
double height_in_inches;
if (MainActivity.unit_is_gram){
weight = weight * 2.2;
}
if (MainActivity.unit_is_meter){
height_in_inches = 0.39370* inches; //actually is 0.39370 * centimeters
}
else height_in_inches = (feet*12)+inches;
if (fem == true) {
//if it is a female use this formula
bmrResult = 10*(weight/2.2)+6.25*(height_in_inches*2.54)-5*age-161;
}
else if (male == true){
//if it is a male use this formula
bmrResult = 10*(weight/2.2)+6.25*(height_in_inches*2.54)-5*age+5;
}
calander = Calendar.getInstance();
simpledateformat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date = simpledateformat.format(calander.getTime());
return bmrResult;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Spinner one = (Spinner)parent;
if(one.getId() == R.id.cal_actlevel_list){
TextView myText = (TextView) view;
if (position == 0) valofactlevel = 1.2;
else if (position == 1) valofactlevel = 1.375;
else if (position == 2) valofactlevel = 1.55;
else if (position == 3) valofactlevel = 1.725;
else if (position == 4) valofactlevel = 1.9;
}
else if(one.getId() == R.id.cal_goal_spinner){
if (position == 0){
goalnum = 0;
}
else if (position == 1){
goalnum = -500;
}
else if (position == 2){
goalnum = 500;
}
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
//Toast.makeText(this,"Select activity level ",Toast.LENGTH_SHORT).show();
}
}
导入android.content.Intent;
导入android.os.Bundle;
导入android.text.TextUtils;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.RadioButton;
导入android.widget.RadioGroup;
导入android.widget.Spinner;
导入android.widget.TextView;
导入android.widget.Toast;
进口欧盟.healthydev.bodymeasure.R;
导入java.text.simpleDataFormat;
导入java.util.Calendar;
公共类活动实现AdapterView.OnItemSelectedListener{
旋转器sp,目标_sp;
双电压电平=0;
int goalnum=0;
日历日历;
SimpleDateFormat SimpleDateFormat;
字符串日期;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u卡路里);
TextView cal_pound_to_gram=(TextView)findViewById(R.id.cal_pounds_view);
EditText-weight\u-num=(EditText)findViewById(R.id.cal\u-weight\u-num);
DatabaseHelper DatabaseHelper=新的DatabaseHelper(此);
databaseHelper.addReading();
if(主要活动单位为克){
卡镑至克塞特(千克);
}
if(主活动单位为米){
TextView校准英寸到分=(TextView)findViewById(R.id.cal英寸到分视图);
cal_inches_to_cent.setText(“厘米”);
//校准英寸至分设定宽度(200);
EditText cent_num=(EditText)findViewById(R.id.cal_inches_num);
设置宽度的分数值(595);
TextView校准英尺到米=(TextView)findViewById(R.id.cal\u英尺视图);
校准英尺到米。SETEXT(“”;//米
EditText cal_English=(EditText)findViewById(R.id.cal_Foots_num);
cal_消失。设置可见性(视图。不可见);
}
按钮复位按钮=(按钮)findViewById(R.id.cal\u reset\u按钮);
resetButt.setOnClickListener(
新建按钮。OnClickListener(){
公共void onClick(视图v){
EditText权重\数量\重置=(EditText)findViewById(R.id.cal \年龄\数量);
权重_num _reset.setText(null);
EditText腰围\数值\重置=(EditText)findViewById(R.id.cal \重量\数值);
腰围数重置.setText(空);
EditText腕部\数量\重置=(EditText)findViewById(R.id.cal \脚\数量);
腕关节数重置.setText(空);
EditText hip_num_reset=(EditText)findViewById(R.id.cal_inches_num);
hip_num_reset.setText(null);
TextView bf\u answer\u reset=(TextView)findViewById(R.id.cal\u answer);
bf\u answer\u reset.setText(“”);
}
}
);
sp=(微调器)findViewById(R.id.cal\u actlevel\u列表);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.levelofcat,android.R.layout.simple\u微调器\u项);
sp.setAdapter(适配器);
sp.setOnItemSelectedListener(此);
goal_sp=(微调器)findviewbyd(R.id.cal_goal_微调器);
ArrayAdapter goal\u adapter=ArrayAdapter.createFromResource(这个,R.array.goalsarr,android.R.layout.simple\u微调器\u项);
目标设置适配器(目标适配器);
目标_sp.setonimselectedlistener(此);
按钮计算热量按钮=(按钮)findViewById(R.id.calc\u卡路里按钮);
计算热量按钮。设置单击侦听器(
新建按钮。OnClickListener(){
公共void onClick(视图v){
EditText age_num=(EditText)findViewById(R.id.cal_age_num);
字符串age_s=(age_num.getText().toString());
双倍年龄;
if(TextUtils.isEmpty(年龄)){
age_num.setError(“字段不能为空”);
年龄=0;
返回;
}
age=Integer.parseInt(age_num.getText().toString());
EditText-weight\u-num=(EditText)findViewById(R.id.cal\u-weight\u-num);
字符串权重(weight_num.getText().toString());
双倍重量=0;
如果(TextUtils.isEmpty(重量)){
weight_num.setError(“字段不能为空”);
权重=0;
返回;
}
weight=Integer.parseInt(weight_num.getText().toString());
双足=0;
如果(!MainActivity.unit\u为\u米){
EditText-Foots\u-num=(EditText)findViewById(R.id.cal\u-Foots\u-num);
字符串feets\u s=feets\u num.getText().toString();
if(TextUtils.isEmpty(英尺)和&!MainActivity.unit是米){
Foots_num.setError(“字段不能为空”);
英尺=0;
返回;
}
英尺=整数
FOREIGN KEY (user_id) REFERENCES TABLE_USER(user_id)
userId = // id of the user //
ContentValues Values = new ContentValues();
Values.put(COLUMN_READING_CALORIES, 500);
//...
getContext().getContentResolver().update(TABLE_READING.CONTENT_URI,
Values,
TABLE_READING.user_id + " = " + userId,
null);