从一个类调用另一个方法

时间:2019-02-27 21:46:07

标签: java android sqlite

我在一个类中编写了此方法,用于检查数据库中是否存在表:

public boolean DoesTableExist(String tableName) {
    SQLiteDatabase mDatabase = openOrCreateDatabase("privdb",MODE_PRIVATE,null);

    Cursor cursor = mDatabase.rawQuery("select DISTINCT tbl_name from sqlite_master where tbl_name = '"+tableName+"'", null);
    if(cursor!=null) {
        if(cursor.getCount()>0) {
            cursor.close();
            return true;

        }
        cursor.close();
    }

    return false;
}

我现在想在其他活动或类中调用此方法,而不必每次都在每个文件中编写相同的代码。 我该怎么办?

3 个答案:

答案 0 :(得分:2)

通常,您将通过实例化该类然后调用该方法来调用另一个类中的方法。例如,如果该方法所在的类名为DatabaseUtils,则可以执行以下操作:

DatabaseUtils dbUtils = new DatabaseUtils();
boolean exists = dbUtils.doesTableExist("tablename"); 
                      // ^ note that the normal Java convention is to make
                      //   method names start with a lower case letter

但是,这具有“实用程序”方法的感觉(该对象可能不存储任何状态,因此实际上不需要实例化它),并且处理这些状态的常用方法是使该方法静态化,就像这样:

public static boolean doesTableExist(String tableName) {

这会使方法存在于类定义本身上,而不是存在于类的特定实例上,并允许您执行以下操作:

boolean exists = DatabaseUtils.doesTableExist("tablename");

答案 1 :(得分:0)

为该方法所在的类创建一个实例,创建一个get方法并通过该实例调用方法。 另一种选择是将方法定义为静态方法并以这种方式调用。

实例:

ClassName classInstance = new ClassName();
classInstance.getMethod(parametar);

静态:

ClassName.methodName(parametar);

更多有关以下内容: How to call a method in another class in Java?

答案 2 :(得分:0)

将其放入“ utils”包中将是一个不错的选择。 创建一个名为“ utils”的新Java包,添加一个新类,例如“ DatabaseUtils.java”,并使它看起来像这样:

    public class DatabaseUtils {

    public boolean DoesTableExist(String tableName) {
                SQLiteDatabase mDatabase = openOrCreateDatabase("privdb",MODE_PRIVATE,null);

                Cursor cursor = mDatabase.rawQuery("select DISTINCT tbl_name from sqlite_master                 where tbl_name = '"+tableName+"'", null);
                if(cursor!=null) {
                    if(cursor.getCount()>0) {
                        cursor.close();
                        return true;
                    }
                    cursor.close();
                }
                return false;
            }

    }

现在您可以从其他地方引用它了

    public class main {

            public static void main(String [] args)
                    boolean isTableExisting = DatabaseUtils.doesTableExist("yourTableName")
                    System.out.println("Table existing? " + isTableExisting);
            }
    }

可能还需要传递数据库名称(“ privdb”)或引用方法“ openOrCreateDatabase(...)”的位置。

当数据库确实存在时,它将打印"Table existing? true"