我仍然对 Java 和 Android 开发很陌生。但是在这部分中,我找不到问题所在。LogCat 返回“没有这样的表:翻译”。
package se.maxallan.birdsound;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class SpeciesDbAdapter extends SQLiteOpenHelper{
public static final String DB_SPECIE_ID = "_id";
public static final String DB_SCF_NAME = "scf_name";
public static final String DB_T_LANG = "lang";
public static final String DB_T_TRANS = "translated";
private static SpeciesDbAdapter mDbHelp;
private static SQLiteDatabase mDb;
private static final String DB_NAME = "database.db";
private static final String DB_TBL_SPECIES = "species";
private static final String DB_TBL_TRANSLATIONS = "translations";
//private static final String DB_TBL_SOUNDS = "sounds";
private static final int DB_VERSION = 1;
private final Context mCtx;
static String createSpecies = "CREATE TABLE if not exists "
+ DB_TBL_SPECIES
+" ("+DB_SPECIE_ID +" INTEGER PRIMARY KEY AUTOINCREMENT,"
+DB_SCF_NAME+");";
static String createTranslations = "CREATE TABLE if not exists "
+ DB_TBL_TRANSLATIONS
+" (tid INTEGER PRIMARY KEY AUTOINCREMENT,"
+DB_SPECIE_ID+","
+DB_T_TRANS+","
+DB_T_LANG+");"; //The error is here?
public SpeciesDbAdapter(Context context) {
super(context, DB_NAME, null, DB_VERSION);
this.mCtx = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createSpecies);
db.execSQL(createTranslations);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
//Open the database
public SpeciesDbAdapter open() throws SQLException {
mDbHelp = new SpeciesDbAdapter(mCtx);
mDb = mDbHelp.getWritableDatabase();
return this;
}
//Close the connection
public void close() {
if (mDbHelp != null) {
mDbHelp.close();
}
}
public void addSpecie(String scf, String translation, String lang){
ContentValues specieValues = new ContentValues();
ContentValues translationsValues = new ContentValues();
specieValues.put(DB_SCF_NAME, scf);
int LastInsertedId = (int) mDb.insert(DB_TBL_SPECIES, null, specieValues);
translationsValues.put(DB_T_LANG, lang);
translationsValues.put(DB_T_TRANS, translation);
translationsValues.put(DB_SPECIE_ID, LastInsertedId);
mDb.insert(DB_TBL_TRANSLATIONS, null, translationsValues);
}
public Cursor fetchAllSpecies() {
Cursor mCursor = mDb.rawQuery("select * from "+ DB_TBL_SPECIES +" s inner join "+ DB_TBL_TRANSLATIONS +" t on s._id=t._id", null);
Log.d("Database", "Result cursor size " + mCursor.getCount() );
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
public void insertSomeSpecies() {
addSpecie("Cygnus olor", "Knölsvan", "sv");
addSpecie("Cygnus cygnus", "Sångsvan", "sv");
}
}
我认为错误是我创建表translations
- 或尝试创建......