我得到了这个,实际上它是在旧版本中运行但没有在Android 2.2中运行这是代码......我不知道要替换它或者有替代方法。 所以我添加了整个代码,以便能够理解真实。问题我看到它运行在旧版本的Android工作室。
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String Database_Name= "student.db";
public static final String Table_Name= "student_table";
public static final String COL_1= "id";
public static final String COL_2= "name";
public static final String COL_3= "surname";
public static final String COL_4= "marks";
public DatabaseHelper(Context context){
super(context, Database_Name,null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table" + Table_Name + " (id integer primary key auto increment, name text, surname text, marks ineteger)" );
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exists" + Table_Name);
onCreate(db);
}
public boolean insertData(String name, String surname, String marks){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
ContentValues.put(COL_2,name);
ContentValues.put(COL_3,surname);
ContentValues.put(COL_4,marks);
long result = db.insert(Table_Name, null,contentValues);
if (result==-1) {
return false;
} else {
return true;
}
}
}
答案 0 :(得分:0)
发生此错误是因为您正在混淆类的静态和非静态部分。
举个例子:
public class Test {
public String testVariable = "Honk";
public static String methodTest() {
return testVariable;
}
public static String methodTest2() {
Test test = new Test();
return test.testVariable;
}
public String methodTest3() {
return testVariable;
}
}
此测试将失败。您正试图从静态上下文testVariable
获取非静态变量methodTest()
。
访问:
String result = Test.methodTest();
这会奏效。您正在创建一个新的Test
类实例,并且您可以正常访问变量testVariable
。
访问:
String result = Test.methodTest2();
这会奏效。您正在从非静态上下文testVariable
访问非静态变量methodTest3()
。
访问:
Test test = new Test();
String result = test.methodTest();
如果没有看到代码的其余部分,很难为您提供更改内容的建议。您在问题中提供的代码不太可能是罪魁祸首。
您的问题是您正在静态访问ContentValues
课程。
ContentValues.put(COL_2,name);
您需要使用您创建的变量:contentValues
。