android 中的 sqlite 没有将我的数据插入到 table
sqlLite in android didnt insert my data to table
我不知道为什么在执行 insertGasData 后我有 return 结果 = -1。在其他类似的结构中,结果是 != -1,但有 = -1。
有 DatabaseHelper class 和 main class
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "car.db";
public static final String TABLE_NAME2 = "car_gas_table";
public static final String COL_G_1 = "GAS_ID";
public static final String COL_G_2 = "GAS_DATE";
public static final String COL_G_3 = "GAS_MILEAGE";
public static final String COL_G_4 = "FUEL_TYPE";
public static final String COL_G_5 = "FUEL_COST";
public static final String COL_G_6 = "FUEL_VOLUME";
public DatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table " + TABLE_NAME2 + " (GAS_ID INTEGER PRIMARY KEY AUTOINCREMENT, GAS_DATE TEXT, GAS_MILEAGE TEXT, FUEL_TYPE TEXT, FUEL_COST TEXT, FUEL_VOLUME TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME2);
}
public boolean insertGasData(String date, String mileage, String fuel_type, String fuel_price, String fuel_volume) {
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_G_2, date);
contentValues.put(COL_G_3, mileage);
contentValues.put(COL_G_4, fuel_type);
contentValues.put(COL_G_5, fuel_price);
contentValues.put(COL_G_6, fuel_volume);
long result = sqLiteDatabase.insert(TABLE_NAME2, null, contentValues);
if (result == -1)
return false;
else return true;
}
有调用方法
我用那里的字符串来消除其他错误,但它没有帮助
public void AddRefuelrData() {
bDodaj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// boolean isInsert = myDb.insertGasData(eRefDate.getText().toString(), eRefMileage.getText().toString(), eRefType.getText().toString(), eRefPrice.getText().toString(), eRefVolume.getText().toString());
boolean isInsert = myDb.insertGasData("dd","mm", "tt", "pr", "vo");
if (isInsert == true)
Toast.makeText(MainActivity.this, "Data inserted", Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "Data not inserted", Toast.LENGTH_LONG).show();
}
});
}
在调用方法 insertGasData 后我有 return false
enter image description here
您确定 table 确实已正确创建吗?
使用设备文件资源管理器检查数据库是否已创建。
这应该有助于缩小问题范围。
我不知道为什么在执行 insertGasData 后我有 return 结果 = -1。在其他类似的结构中,结果是 != -1,但有 = -1。 有 DatabaseHelper class 和 main class
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "car.db";
public static final String TABLE_NAME2 = "car_gas_table";
public static final String COL_G_1 = "GAS_ID";
public static final String COL_G_2 = "GAS_DATE";
public static final String COL_G_3 = "GAS_MILEAGE";
public static final String COL_G_4 = "FUEL_TYPE";
public static final String COL_G_5 = "FUEL_COST";
public static final String COL_G_6 = "FUEL_VOLUME";
public DatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
sqLiteDatabase.execSQL("create table " + TABLE_NAME2 + " (GAS_ID INTEGER PRIMARY KEY AUTOINCREMENT, GAS_DATE TEXT, GAS_MILEAGE TEXT, FUEL_TYPE TEXT, FUEL_COST TEXT, FUEL_VOLUME TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME2);
}
public boolean insertGasData(String date, String mileage, String fuel_type, String fuel_price, String fuel_volume) {
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_G_2, date);
contentValues.put(COL_G_3, mileage);
contentValues.put(COL_G_4, fuel_type);
contentValues.put(COL_G_5, fuel_price);
contentValues.put(COL_G_6, fuel_volume);
long result = sqLiteDatabase.insert(TABLE_NAME2, null, contentValues);
if (result == -1)
return false;
else return true;
}
有调用方法 我用那里的字符串来消除其他错误,但它没有帮助
public void AddRefuelrData() {
bDodaj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// boolean isInsert = myDb.insertGasData(eRefDate.getText().toString(), eRefMileage.getText().toString(), eRefType.getText().toString(), eRefPrice.getText().toString(), eRefVolume.getText().toString());
boolean isInsert = myDb.insertGasData("dd","mm", "tt", "pr", "vo");
if (isInsert == true)
Toast.makeText(MainActivity.this, "Data inserted", Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "Data not inserted", Toast.LENGTH_LONG).show();
}
});
}
在调用方法 insertGasData 后我有 return false
enter image description here
您确定 table 确实已正确创建吗? 使用设备文件资源管理器检查数据库是否已创建。 这应该有助于缩小问题范围。