将各种活动链接到一个SQLite数据库

时间:2016-01-20 13:10:40

标签: android

美好的一天,程序员们,我写了一个小的Android应用程序,以练习SQLite数据库系统。该应用程序基本上从用户接收数据并将其保存在创建的表中。但我希望能够从其他活动访问此SQLite表。香港专业教育学院尝试过我在这个网站上看到的其他解决方案但它没有使用我的代码。以下是我的代码和界面。非常感谢,这对我很有帮助。感谢。

App UI

enter image description here

这是用于表创建

db = openOrCreateDatabase("MyDatabase", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS database(name VARCHAR,age VARCHAR,gender VARCHAR,email VARCHAR,state VARCHAR,marital VARCHAR);");

这适用于插入表格

db.execSQL("INSERT INTO database VALUES('" + Name.getText()
            + "','" + Age.getText() + "','" + G + "','"
            + Email.getText() + "','" + State.getText() + "','"
            + MaritalS.getSelectedItem().toString() + "');");

Pease帮助。非常感谢你们

3 个答案:

答案 0 :(得分:0)

实际上我们通常将数据库相关代码放在一个帮助器类中,我们可以在活动,片段和其他想要使用它的类中将它用作util方法。所以你只需要创建你的DBHelper类并将你的方法放在数据库中在它。

答案 1 :(得分:0)

在单独的文件中创建数据库类现在在该类中创建一个公共函数,该函数将对象作为要插入数据库的参数 现在在你想要使用sqlite的每个活动中,创建一个数据库类的对象并调用你创建的插入函数将对象传递给插入

答案 2 :(得分:0)

这是我们使用的实用程序文件:

public class DataBaseConnector {

  private static SQLiteDatabase db;

  private static DataBaseConnector instance;

  public synchronized static DataBaseConnector getInstance() {
    if (instance == null) {
        instance = new DataBaseConnector();
    }
    return instance;
  }

  private DataBaseConnector() {

  }

/**
 * Send our query, return our Cursor of results, play with it.
 * 
 * @param query
 * @return
 */
public static Cursor query(String query) {
    if (query != null) {
        openDB();

        while (db.isDbLockedByCurrentThread()) {
            // db in use, keep looping
        }

        Log.d("Query", query);

        return db.rawQuery(query, null);
    } else {
        return null;
    }
}

public static Cursor query(String query, String[] args) {
    openDB();

    while (db.isDbLockedByCurrentThread()) {
        // db in use, keep looping
    }
    Log.d("Query & Args", query + "; " + Arrays.toString(args));
    return db.rawQuery(query, args);
}

public static void execSQL(String sql) {
    if (sql != null) {
        openDB();

        while (db.isDbLockedByCurrentThread()) {
            // db in use, keep looping
        }
        Log.d("ExecSQL", sql);
        db.execSQL(sql);
    }
}

public static boolean canOpenDB() {
    if (db == null) {
        try {
            db = SQLiteDatabase.openDatabase(GlobalVars.getDBPath(), null, SQLiteDatabase.OPEN_READWRITE);
            if (db.isOpen()) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    } else {
        return true;
    }
}

private static void openDB() {
    if (db == null) {
        db = SQLiteDatabase.openDatabase(GlobalVars.getDBPath(), null, SQLiteDatabase.OPEN_READWRITE);
    }
}

public void CloseIt() {
    if (db != null) {
        while (db.isDbLockedByCurrentThread()) {
            // db in use, keep looping
        }
        if (db != null) {
            db.close();
        }
        db = null;
    }
}

public static void StaticCloseIt() {
    if (db != null) {
        while (db.isDbLockedByCurrentThread()) {
            // db in use, keep looping
        }
        if (db != null) {
            db.close();
        }
        db = null;
    }
}

public static boolean isDatabaseIntegrityOk() {
    if (db != null) {
        return db.isDatabaseIntegrityOk();
    }
    return false;
}

public static void beginTransaction() {
    if (db != null) {
        db.beginTransaction();
    }
}

public static void setTransactionSuccessful() {
    if (db != null) {
        db.setTransactionSuccessful();
    }
}

public static void endTransaction() {
    if (db != null) {
        db.endTransaction();
    }
}

public static String getMaxSize() {
    if (db != null) {
        return db.getMaximumSize() + "";
    }
    return "DB Is Null";
}

public static String getPageSize() {
    if (db != null) {
        return db.getPageSize() + "";
    }
    return "DB Is Null";
}

public static String isReadOnly() {
    if (db != null) {
        return db.isReadOnly() + "";
    }
    return "DB Is Null";
}

public static int releaseMemory() {
    if (db != null) {
        return SQLiteDatabase.releaseMemory();
    }
    return -1;
}

public static String inTransaction() {
    if (db != null) {
        return db.inTransaction() + "";
    }
    return "DB Is Null";
}

public static void insert(String table, ContentValues cv) {
    openDB();

    if (db != null) {
        db.insert(table, null, cv);
    }
}
}

使用它:

    String sql = "UPDATE L_System SET Value = '" + p.versionName + "' WHERE Setting = 'keyboardVersion'";
    DataBaseConnector.execSQL(sql);

<强>更新

教程:http://www.vogella.com/tutorials/AndroidSQLite/article.html