У меня есть исходный код, использование базы данных.
Мои коды базы данных находятся в классе, и когда я вставляю что-нибудь из этого класса не существует никаких проблем. Но если вызов метода в другом классе сообщения «java.lang.NullPointerException» ошибка будет показан от этой линии SQLiteDatabase sd = getWritableDatabase();
Ошибки при изменении базы данных для метода getWritableDatabase()
Это мой основной класс:
public static class SchemaHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "adv_data.db";
// TOGGLE THIS NUMBER FOR UPDATING TABLES AND DATABASE
private static final int DATABASE_VERSION = 1;
SchemaHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// CREATE JOINT TABLE
db.execSQL("CREATE TABLE"+ JointTable.TABLE_NAME
+ "("+ JointTable.ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ JointTable.NAME +" TEXT, "
+ JointTable.FAMILY + " TEXT,"
+ JointTable.ADDRESS+"TEXT,"
+ JointTable.PARTICIPATIONNUM +"Text,"
+ JointTable.RECOGNITIONNUM + "TEXT,"
+ JointTable.USAGE +"TEXT);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
Log.w("LOG_TAG", "Upgrading database from version "
+ oldVersion + " to " + newVersion + ", which will destroy all old data");
// KILL PREVIOUS TABLES IF UPGRADED
db.execSQL("DROP TABLE IF EXISTS "+ JointTable.TABLE_NAME);
// CREATE NEW INSTANCE OF SCHEMA
onCreate(db);
} // End of onUpdate class
===== ========================== ВСТАВИТЬ К таблице ===================== ==============
public long addJoit(String name, String family, String address,
String participationNum ,String recognitionNum, String usage){
ContentValues cv= new ContentValues();
cv.put(JointTable.NAME, name);
cv.put(JointTable.FAMILY, family);
cv.put(JointTable.ADDRESS, address);
cv.put(JointTable.PARTICIPATIONNUM, participationNum);
cv.put(JointTable.RECOGNITIONNUM,recognitionNum);
cv.put(JointTable.USAGE, usage);
SQLiteDatabase sd = this.getWritableDatabase();// this line get the error
long result= sd.insert(JointTable.TABLE_NAME,
JointTable.NAME, cv);
return result;
}
}
}
это другой класс, который называют методом
MainActivity.SchemaHelper sh = new MainActivity.SchemaHelper(null);
long result= sh.addJoit("name", "family", "address", "participationNum", "recognitionNum", "usage");
Я хочу знать, почему благодарственное-х
Вы пропустили пробел здесь: 'db.execSQL (« CREATE TABLE »+ JointTable.TABLE_NAME' должно быть' db.execSQL («CREATE TABLE» + JointTable.TABLE_NAME' или таблица вообще не будет создана –