首页 > 解决方案 > 如何在 android studio 中解析我的 SQL 数据库的布尔值?

问题描述

我有一个具有布尔值的开关。我正在尝试将布尔值解析为 int,但它不起作用。当我删除布尔值时,所有值都会添加到数据库中,所以我知道我误解了如何从我的开关中实现这个布尔值。

这是我尝试实现的代码的一部分

public class MainActivity extends AppCompatActivity {


public static DataBaseHelper dataBaseHelper;


Button btn_submit, btn_users;
EditText et_gender,et_age;
Switch sw_diagnosed;


dataBaseHelper.queryData("CREATE TABLE IF NOT EXISTS USER(Id INTEGER PRIMARY KEY AUTOINCREMENT, gender VARCHAR, age INT, diagnosed INT DEFAULT 0, image BLOB)");

int numDiagnosed = sw_diagnosed.isChecked() ? 1 : 0;

String bla = Integer.toString(numDiagnosed);

btn_submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            try {
                dataBaseHelper.insertData(
                        et_gender.getText().toString().trim(),
                        //et_gender.getText().toString(), Integer.parseInt(et_age.getText().toString()
                        Integer.parseInt(et_age.getText().toString()),
                        Integer.parseInt(bla),
                        imageViewToByte(ivFinger)
                );
                Toast.makeText(getApplicationContext(), "Added Successfully", Toast.LENGTH_SHORT).show();
            }
            catch (Exception e){
                e.printStackTrace();
                Toast.makeText(getApplicationContext(), "Error submitting user", Toast.LENGTH_SHORT).show();
            }
        }
    });
}

这是我的 SQL 助手中的方法

public void insertData(String gender, int age, int isDiagnosed, byte[] image){
    SQLiteDatabase database = getWritableDatabase();
    String sql = "INSERT INTO USER VALUES (NULL, ?,?,?,?)";

    SQLiteStatement statement = database.compileStatement(sql);
    statement.clearBindings();

    statement.bindString(1, gender);
    statement.bindString(2, Integer.toString(age));
    statement.bindString(3, Integer.toString(isDiagnosed));
    statement.bindBlob(3, image);
    statement.executeInsert();

}

标签: javaandroidsqlandroid-studioboolean-operations

解决方案


如果您想在尝试保存时从开关中获取价值,则应将该代码放在 OnClickListener 中:

int numDiagnosed = sw_diagnosed.isChecked() ? 1 : 0;

然后尝试保存它。此外,您将 int 转换为 String,然后将 String 转换为 Integer。只需使用从上面的代码中获得的值,如下所示:

dataBaseHelper.insertData(
                        et_gender.getText().toString().trim(),
                        //et_gender.getText().toString(), Integer.parseInt(et_age.getText().toString()
                        Integer.parseInt(et_age.getText().toString()),
                        numDiagnosed,
                        imageViewToByte(ivFinger)
                );

推荐阅读