Android Studio sqlite db 未使用查询更新 table 中的特定变量

Android Studio sqlite db doesnt update a specific variable in table with query

我的程序的主要目标是 select 一个车站名称并点击 button.After 我试图增加乘客价值的按钮。 我可以正确获取乘客的价值,但是当我尝试更新它时它不会更新 value.I 尝试了所有可能的解决方案并且无法修复 it.What 我应该做还是我做错了什么?

这是我的数据库助手 class

public class DB_Helper extends SQLiteOpenHelper {
create_station parameter_helper;
ContentValues values=new ContentValues();
public static final String DBNAME="users.db";
public DB_Helper(@Nullable Context context) {
    super(context, DBNAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    sqLiteDatabase.execSQL("create table users(username TEXT primary key,password TEXT,admin TEXT)");
    sqLiteDatabase.execSQL("create table station(station_name TEXT primary key,latitude TEXT,longitude TEXT,passengers INTEGER)");
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    sqLiteDatabase.execSQL("drop table if exists users");
    sqLiteDatabase.execSQL("drop table if exists station");
}
public Boolean insertData(String username,String password,String admin){
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues values=new ContentValues();
    values.put("username",username);
    values.put("password",password);
    values.put("admin",admin);

    long result=db.insert("users",null,values);
    if (result==-1)
        return  false;
    else
        return true;

}
public Boolean insert_station_Data(String station_name,String latitude,String longitude,int num_passenger){
    SQLiteDatabase db=this.getWritableDatabase();

    values.put("station_name",station_name);
    values.put("latitude",latitude);
    values.put("longitude",longitude);
    values.put("passengers",num_passenger);
    long result=db.insert("station",null,values);
    if (result==-1)
        return  false;
    else
        return true;
}
public ArrayList<String> get_Latitude(){
    ArrayList<String> station_Latitude = new ArrayList<>();
    SQLiteDatabase db=this.getReadableDatabase();
    Cursor cursor=db.rawQuery("select latitude from station ",null);


    while(cursor.moveToNext()) {
        String data=cursor.getString(cursor.getColumnIndexOrThrow("latitude"));
        station_Latitude.add(data);
    }
    cursor.close();
    return station_Latitude;
}
public ArrayList<String> get_Longitude(){
    ArrayList<String> station_Longitude = new ArrayList<>();
    SQLiteDatabase db=this.getReadableDatabase();
    Cursor cursor=db.rawQuery("select longitude from station ",null);


    while(cursor.moveToNext()) {
        String data=cursor.getString(cursor.getColumnIndexOrThrow("longitude"));
        station_Longitude.add(data);
    }
    cursor.close();
    return station_Longitude;
}

public ArrayList<String> get_Station_Name(){
    ArrayList<String> station_name = new ArrayList<>();
    SQLiteDatabase db=this.getReadableDatabase();
    Cursor cursor=db.rawQuery("select station_name from station ORDER BY rowid",null);


    while(cursor.moveToNext()) {
        String data=cursor.getString(cursor.getColumnIndexOrThrow("station_name"));
        station_name.add(data);
    }
    cursor.close();
    return station_name;
}
public void user_add_passenger(String inbound_station){
    SQLiteDatabase db=this.getReadableDatabase();
    SQLiteDatabase db2=this.getWritableDatabase();
    ContentValues values = new ContentValues();
    int num_of_passenger=0;
    Cursor cursor=db.rawQuery("select passengers from station where station_name=?",new String[]{inbound_station});

    while(cursor.moveToNext()) {
        num_of_passenger=cursor.getInt(cursor.getColumnIndexOrThrow("passengers"));
        System.out.println("Giriyoor");
    }
    num_of_passenger+=1;
    values.put("station_name",String.valueOf(num_of_passenger));
    System.out.println("Passenger_str="+num_of_passenger);


    System.out.println(db2.update("station", values, "passengers = ?", new String[]{String.valueOf(num_of_passenger)}));


}







public Boolean checkusername(String username){
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor cursor=db.rawQuery("select * from users where username=?",new String[]{username});
    if (cursor.getCount()>0)
        return true;
    else
        return false;
}

public Boolean checkusernamepassword(String username,String password,String admin){
    SQLiteDatabase db=this.getWritableDatabase();
    Cursor cursor=db.rawQuery("select * from users where username=? and password=? and admin=?",new String[]{username,password,admin});
    if (cursor.getCount()>0){
        return true;
    }
    else{
        return false;
    }

}

不升级变量的函数: 我正在尝试首先查询以获得乘客 value.After 我正在尝试增加乘客价值的数量并更新 passenger.There 没有错误但它不会更新 it.Even 我看起来有类似的问题这里 SQLiteDatabase update not working? 我仍然无法解决问题。

public void user_add_passenger(String inbound_station){
    SQLiteDatabase db=this.getReadableDatabase();
    SQLiteDatabase db2=this.getWritableDatabase();
    ContentValues values = new ContentValues();
    int num_of_passenger=0;
    Cursor cursor=db.rawQuery("select passengers from station where station_name=?",new String[]{inbound_station});

    while(cursor.moveToNext()) {
        num_of_passenger=cursor.getInt(cursor.getColumnIndexOrThrow("passengers"));
        System.out.println("Giriyoor");
    }
    num_of_passenger+=1;
    values.put("station_name",String.valueOf(num_of_passenger));
    System.out.println("Passenger_str="+num_of_passenger);


    System.out.println(db2.update("station", values, "passengers = ?", new String[]{String.valueOf(num_of_passenger)}));


}

检查您是否在 ContentValue 中传递了正确的列名和值。

 values.put("station_name",String.valueOf(num_of_passenger));

我觉得应该是;

values.put("passengers",String.valueOf(num_of_passenger));

update query应该是这样的;

db2.update("station", values, "station_name=?", new String[]{String.valueOf(inbound_station)});