Java 非静态方法&x27;getWritableDatabase()';无法从静态上下文引用

Java 非静态方法&x27;getWritableDatabase()';无法从静态上下文引用,java,Java,我正在使用Android Studio为我的任务编写一个应用程序,用户可以在其中向数据库添加客户。但是,行getWritableDatabase()显示标题中的问题 字符串id、名称、地址、号码、电子邮件、作业;这是我认为我需要调整的 @Override protected String doInBackground(String... params) { String method = params[0]; DatabaseHelper databaseHelper = ne

我正在使用Android Studio为我的任务编写一个应用程序,用户可以在其中向数据库添加客户。但是,行
getWritableDatabase()显示标题中的问题

字符串id、名称、地址、号码、电子邮件、作业;这是我认为我需要调整的

@Override
protected String doInBackground(String... params) {

    String method = params[0];
    DatabaseHelper databaseHelper = new DatabaseHelper(context);

    if(method.equals("add_info"))
    {
        String id = params[1];
        String Name = params[2];
        String Address = params[3];
        int Number = Integer.parseInt(params[4]);
        String Email = params[5];
        String Jobs = params[5];
        SQLiteDatabase database = DatabaseHelper.getWritableDatabase();
        DatabaseHelper.addInformations(database,id, Name, Address, Email, Jobs);
        return "Information Inserted.....";

    }
    return null;
}

DatabaseHelper.getWritableDatabase()
表示您正在调用一个没有与调用关联的特定对象的类方法。这基本上是一个函数调用而不是方法调用,因为方法调用与对象的特定实例相关联

从您所展示的内容来看,
getWritableDatabase()
函数实际上不是一个类方法,而是一个实例方法。这意味着应该在DatabaseHelper的实例上调用它。您没有通过DatabaseHelper实例调用它,这就是导致此错误的原因。您希望使用此方法的方式是:

<instance of DatabaseHelper>.getWriteableDatabase()
看来你的意思是:

SQLiteDatabase database = databaseHelper.getWriteableDatabase()
以下行可能也是如此,应该是:

databaseHelper.addInformations(database,id, Name, Address, Email, Jobs);

对于变量名,应使用带有小写首字母的标识符,对于类和其他类型的名称,应保留带有大写首字母的标识符。这是标准的Python方式,尽管很明显,Python语言本身并不强制执行这一点。我想,不这样做是你犯了一个小错误的主要原因。所以:姓名、地址、号码、电子邮件…

@覆盖受保护的字符串doInBackground(字符串…参数){String method=params[0];DatabaseHelper DatabaseHelper=new DatabaseHelper(上下文);这是ifHey之前的代码的顶部,感谢您的帮助。我已经设法修复了它。但是“DatabaseHelper.AddInformation”(数据库、id、名称、地址、电子邮件、作业);“有问题。”.addInformation“有一个弹出错误,即“无法解析方法”addInformation(android.database.sqlite.SQLiteDatabase、java.lang.String、java.lang.String、java.lang.String、java.lang.String、java.lang.String)(SQLiteDatabase,id,Name,Address,Email,Jobs);这是我到目前为止所做的,但是在SQLiteDatabase数据库之间,应该使用“,”或“)”,但不起作用
databaseHelper.addInformations(database,id, Name, Address, Email, Jobs);