2016-01-20 83 views
0

美好的一天夥伴程序員,我寫了一個小型的Android應用程序來練習SQLite數據庫系統。該應用程序基本上從用戶接收數據並將其保存在創建的表中。但我想能夠從其他活動訪問此SQLite表。 ive嘗試了我在這個網站上看到的其他解決方案,但它沒有與我的代碼工作。以下是我的代碼和界面。感謝這麼多人,這會幫助我很多。謝謝。將各種活動鏈接到一個SQLite數據庫

應用程序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() + "');"); 

皮斯幫助。非常感謝

+1

*香港專業教育學院嘗試過其他的解決方案* - >請它們包含在你的問題。 – 2Dee

+0

你的數據庫訪問代碼在哪裏? –

+2

爲什麼你不使用你的數據庫類作爲單身人士。然後,您可以從任何您想要的活動訪問表格! – zIronManBox

回答

0

實際上,我們通常會將數據庫相關的代碼放到一個輔助類中,我們可以在活動,片段和其他想要使用它的類中將它用作util方法。因此,您只需創建DBHelper類並放置你的方法與其中的數據庫相關。

+0

請您知道任何書籍或視頻教程dat有效和全面地教SQLite嗎? bcos我想要知道這個 –

+0

@ uyioriaghan,如果你已經學習了其他數據庫,比如mysql,你可以認爲它們在大多數領域是一樣的,那裏有一個[training](http://www.tutorialspoint.com/ sqlite /)關於'Sqlite',並且[android有關如何在android中使用sqlite的培訓](http://developer.android.com/intl/es/guide/topics/data/data-storage.html#db ),我認爲這會對你有所幫助。 – starkshang

0

在單獨的文件中創建數據庫類現在在該類中創建一個公共函數,該對象作爲要插入數據庫的參數 現在在您想要使用sqlite的每個活動中創建一個數據庫對象類並調用您創建的傳遞對象插入

+0

請你知道任何書或視頻教程dat有效和全面地教SQLite嗎? bcos我想要知道這件事 –

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