我面临一个奇怪的问题。我的应用程序(包括数据库)运行正常。但是,当我保存数据库文件并用sqlite检查它为空时。
我的工作: 我转到设备文件浏览器,转到数据->数据-> my.app.package->数据库->右键单击数据库->另存为->桌面(->覆盖现有文件)
然后我使用终端,进入桌面并输入
sqlite3 smartfeed.db
.tables
->找不到表
select * from feedings;
->错误:没有这样的表格:供稿,但我绝对知道该表格存在并且里面有数据
几周前(当然,之前需要更改很多代码),一切正常。
数据库名称与项目和应用程序名称不同可能是一个问题吗?
还是我想念其他东西?
dbHelper,创建数据库:
public class FeedingDbHelper extends SQLiteOpenHelper {
public final static String DATABASE_NAME = "smartfeed.db";
public static final int DATABASE_VERSION = 1;
// TODO Delete
private static final String TAG = "Gerke";
// SQL creation statement for feeding table
private static final String DATABASE_FEEDINGS_CREATE = "CREATE TABLE " + FeedingEntry.TABLE_NAME + "(" +
FeedingEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
FeedingEntry.COLUMN_FEEDING_NAME + " String NOT NULL, " +
FeedingEntry.COLUMN_COW_NUMBER + " INTEGER NOT NULL, " +
FeedingEntry.COLUMN_KG_PER_COW + " REAL NOT NULL);";
// SQL creation statement for components table
private static final String DATABASE_COMPONENTS_CREATE = "CREATE TABLE " +
ComponentEntry.TABLE_NAME + "(" +
ComponentEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ComponentEntry.COLUMN_FEEDING_ID + " INTEGER NOT NULL, " +
ComponentEntry.COLUMN_PREMIX_ID + " INTEGER," +
ComponentEntry.COLUMN_MANUAL_COMPONENT_ID + " INTEGER," +
"FOREIGN KEY(" + ComponentEntry.COLUMN_FEEDING_ID + ") REFERENCES " +
FeedingEntry.TABLE_NAME + "(" + FeedingEntry._ID + ")," +
"FOREIGN KEY(" + ComponentEntry.COLUMN_PREMIX_ID + ") REFERENCES " +
PremixEntry.TABLE_NAME + "(" + PremixEntry._ID + ")," +
"FOREIGN KEY(" + ComponentEntry.COLUMN_MANUAL_COMPONENT_ID + ") REFERENCES " +
ManualComponentEntry.TABLE_NAME + "(" + ManualComponentEntry._ID + "))";
// SQL creation statement for manual components table
private static final String DATABASE_MANUAL_COMPONENT_CREATE =
"CREATE TABLE " + ManualComponentEntry.TABLE_NAME + "(" +
ManualComponentEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
ManualComponentEntry.COLUMN_NAME + " TEXT NOT NULL, " +
ManualComponentEntry.COLUMN_KG_PER_COW + " INTEGER NOT NULL);";
// SQL creation statement for premixable components table
private static final String DATABASE_PREMIXABLE_CREATE =
"CREATE TABLE " + PremixableEntry.TABLE_NAME + "(" +
PremixableEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
PremixableEntry.COLUMN_NAME + " TEXT NOT NULL UNIQUE, " +
PremixableEntry.COLUMN_SILO + " INTEGER NOT NULL UNIQUE);";
// SQL creation statement for Premix
private static final String DATABASE_PREMIX_CREATE =
"CREATE TABLE " + PremixEntry.TABLE_NAME + "("
+ PremixEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ PremixEntry.COLUMN_NAME + " TEXT NOT NULL UNIQUE);";
// SQL creation statement for m:n premix --> premixable components
private static final String DATABASE_PREMIX_PREMIXABLE_COMPONENT_CREATE =
"CREATE TABLE " + Premix_Premixable_Entry.TABLE_NAME + "("
+ Premix_Premixable_Entry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ Premix_Premixable_Entry.COLUMN_PREMIX_ID + " INTEGER NOT NULL, "
+ Premix_Premixable_Entry.COLUMN_PREMIXABLE_COMPONENT_ID + " INTEGER NOT NULL, "
+ Premix_Premixable_Entry.COLUMN_KG_PER_COW + " REAL NOT NULL, "
+ "FOREIGN KEY(" + Premix_Premixable_Entry.COLUMN_PREMIX_ID + ") REFERENCES "
+ PremixEntry.TABLE_NAME + "(" + PremixEntry._ID + "), "
+ "FOREIGN KEY(" + Premix_Premixable_Entry.COLUMN_PREMIXABLE_COMPONENT_ID + ") REFERENCES "
+ PremixableEntry.TABLE_NAME + "(" + PremixableEntry._ID + "));";
public FeedingDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// Logging the creation statements TODO: DELETE or change to other log type
Log.d(TAG, "SQL Creation Statements:");
Log.d(TAG, "DATABASE_FEEDINGS_CREATE: " + DATABASE_FEEDINGS_CREATE);
Log.d(TAG, "DATABASE_COMPONENTS_CREATE: " + DATABASE_COMPONENTS_CREATE);
Log.d(TAG, "DATABASE_MANUAL_COMPONENT_CREATE: " + DATABASE_MANUAL_COMPONENT_CREATE);
Log.d(TAG, "DATABASE_PREMIXABLECOMPONENTS_CREATE: " + DATABASE_COMPONENTS_CREATE);
Log.d(TAG, "DATABASE_PREMIX_CREATE: " + DATABASE_PREMIX_CREATE);
Log.d(TAG, "DATABASE_PREMIX_PREMIXABLE_COMPONENT_CREATE: " + DATABASE_PREMIX_PREMIXABLE_COMPONENT_CREATE);
// Creating the database
db.execSQL(DATABASE_FEEDINGS_CREATE);
db.execSQL(DATABASE_COMPONENTS_CREATE);
db.execSQL(DATABASE_MANUAL_COMPONENT_CREATE);
db.execSQL(DATABASE_PREMIXABLE_CREATE);
db.execSQL(DATABASE_PREMIX_CREATE);
db.execSQL(DATABASE_PREMIX_PREMIXABLE_COMPONENT_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
// Nothing to do as this is version 1
}
}