我有一个包含列 date_file_creation 的表文件,我想创建一个包含日期文件创建的表日期,当我插入一个新文件时,我检查表日期是否存在我返回行 ID 并将其作为外来插入键入表格文件,否则我插入一个新日期并获取其新行 ID 以将其插入表格文件中。我怎样才能做到这一点?
这是我的尝试:首先我创建一个函数 findfile 来检查日期是否存在
public int finddate(String date){
AndroidOpenDbHelper androidOpenDbHelperObj = new AndroidOpenDbHelper(this);
SQLiteDatabase sqliteDatabase = androidOpenDbHelperObj.getWritableDatabase();
Cursor cursor = sqliteDatabase.rawQuery("SELECT _id FROM " + AndroidOpenDbHelper.TABLE_DATE + " where COLUMN_NAME_DATE = date", null);
startManagingCursor(cursor);
if (cursor != null ) {
if (cursor.moveToFirst()) {
do {
int id = cursor.getInt(cursor.getColumnIndex("_id"));
return id;
} while (cursor.moveToNext());
}
}
return 0;
}
然后onCreate
我就这样做
if( resultat==0)
{
Filedate date1=new Filedate();
date1.setfileDate(providedFileDate);
filedateArrayList.add(date1);
insertDate(date1);//insert in table date
newid=finddate(providedFileDate);//get the row id of the new date inserting
}
else
{newid=resultat; //the row id =the result reterned by the finfdate method}
然后我将它插入文件表中
这是我的 Dbhelper
public class AndroidOpenDbHelper extends SQLiteOpenHelper {
// Database attributes
public static final String DB_NAME = "file_db";
public static final int DB_VERSION = 1;
// file Table attributes
public static final String TABLE_FILE = "file_table";
public static final String COLUMN_NAME_FILE_NAME = "file_name_column";
public static final String COLUMN_NAME_FILE_CATEGORY = "file_category_column";
public static final String COLLUMN_NAME_FILE_THEME= "file_theme_column";
public static final String COLLUMN_NAME_FILE_DATE_CREATING = "file_date_creating_column";
public static final String COLLUMN_NAME_FILE_CLOUD = "file_cloud_column";
public static final String COLLUMN_NAME_FILE_DATE_UPLOADING = "file_date_upload_column";
//category table
public static final String TABLE_CATEGORY = "category_table";
public static final String COLUMN_NAME_CATEGORY = "category_column";
public static final String COLLUMN_NAME_CATEGORY_ABREVIATION = "abreviation_column";
//theme table
public static final String TABLE_THEME = "theme_table";
public static final String COLUMN_NAME_THEME = "theme_column";
public static final String COLLUMN_NAME_THEME_ABREVIATION = "abreviation_column";
//date table
public static final String TABLE_DATE = "date_table";
public static final String COLUMN_NAME_DATE = "date_column";
public AndroidOpenDbHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// create category table
String sqlQueryToCreateCategoryTable = "create table if not exists " + TABLE_CATEGORY + " ( " + BaseColumns._ID + " integer primary key autoincrement, "
+ COLUMN_NAME_CATEGORY + " text not null, "
+ COLLUMN_NAME_CATEGORY_ABREVIATION + " text not null);";
db.execSQL(sqlQueryToCreateCategoryTable);
//create theme table
String sqlQueryToCreateThemeTable = "create table if not exists " + TABLE_THEME + " ( " + BaseColumns._ID + " integer primary key autoincrement, "
+ COLUMN_NAME_THEME + " text not null, "
+ COLLUMN_NAME_THEME_ABREVIATION + " text not null);";
db.execSQL(sqlQueryToCreateThemeTable);
//table date creation
String sqlQueryToCreateDateTable = "create table if not exists " + TABLE_DATE + " ( " + BaseColumns._ID + " integer primary key autoincrement, "
+ COLUMN_NAME_DATE + " text not null);";
db.execSQL(sqlQueryToCreateDateTable);
//Because this method get executed every time we created an object of this class.
//"create table if not exists TABLE_NAME ( BaseColumns._ID integer primary key autoincrement, FIRST_COLUMN_NAME text not null, SECOND_COLUMN_NAME integer not null);"
String sqlQueryToCreateFileTable = "create table if not exists " + TABLE_FILE + " ( " + BaseColumns._ID + " integer primary key autoincrement, "
+ COLUMN_NAME_FILE_NAME + " text not null, "
+ " FOREIGN KEY ("+COLUMN_NAME_FILE_CATEGORY+") REFERENCES "+TABLE_CATEGORY+" ("+BaseColumns._ID+"), "
+ " FOREIGN KEY ("+COLLUMN_NAME_FILE_THEME+") REFERENCES "+TABLE_THEME+" ("+BaseColumns._ID+"), "
+ " FOREIGN KEY ("+COLLUMN_NAME_FILE_DATE_CREATING +") REFERENCES "+TABLE_DATE+" ("+BaseColumns._ID+"), "
+ COLLUMN_NAME_FILE_CLOUD + " text default null,"
+ COLLUMN_NAME_FILE_DATE_UPLOADING + " text default null);";
db.execSQL(sqlQueryToCreateFileTable);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion == 1 && newVersion == 2){
// Upgrade the database
}
}
}