我程式的主要目標是選擇一個站名并單擊按鈕。單擊按鈕后,我試圖增加乘客價值。我可以正確獲取乘客的價值,但是當我嘗試更新它時,它不會更新價值。我嘗試了所有可能的解決方案,但無法修復它。我應該怎么做或者我做錯了什么?
這是我的資料庫助手類
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;
}
}
不升級變數的功能:我正在嘗試首先查詢以獲取乘客值。之后我試圖增加乘客值的數量并更新乘客。沒有錯誤但它不會更新它。甚至我在這里看起來類似的問題SQLiteDatabase 更新不起作用? 我仍然無法解決問題。
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)}));
}
uj5u.com熱心網友回復:
檢查您是否在 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)});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/454456.html
上一篇:“由java.lang.reflect.invocationtargetexception引起”在android簽名生成生成期間出現錯誤
下一篇:在文本框中插入一個數字時出錯
