新聞中心
隨著移動互聯(lián)網(wǎng)的快速發(fā)展,越來越多的應用程序被開發(fā)出來。在這些應用程序中,使用數(shù)據(jù)庫來存儲數(shù)據(jù)是非常常見的。然而,在多個應用程序享數(shù)據(jù)卻面臨著許多挑戰(zhàn)。在這篇文章中,我們將介紹如何在Android中實現(xiàn)全局共享數(shù)據(jù)庫。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、馬尾網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5頁面制作、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為馬尾等各大城市提供網(wǎng)站開發(fā)制作服務。
1. 簡介
在Android中,每個應用程序都有它自己的私有數(shù)據(jù)庫,其他應用程序無法訪問。但是,在某些情況下,我們需要在多個應用程序之間共享數(shù)據(jù)。例如,我們可能需要一個跨應用程序的用戶名和密碼,這樣用戶就可以在多個應用程序中使用同樣的憑據(jù)進行登錄。
實現(xiàn)全局共享數(shù)據(jù)的一種方法是使用ContentProvider。ContentProvider是Android中的一個組件,用于將數(shù)據(jù)從一個應用程序共享到另一個應用程序。通過ContentProvider,我們可以將不同應用程序的數(shù)據(jù)共享在同一個數(shù)據(jù)庫中。
2. 創(chuàng)建共享數(shù)據(jù)庫
創(chuàng)建共享數(shù)據(jù)庫,我們需要創(chuàng)建一個ContentProvider。ContentProvider是Android中的一個組件,用于將數(shù)據(jù)從一個應用程序共享到另一個應用程序。在創(chuàng)建ContentProvider的時候,我們需要實現(xiàn)一些基本方法。
在下面的示例中,我們將創(chuàng)建一個名為“mydb”的共享數(shù)據(jù)庫。該數(shù)據(jù)庫將包含一個名為“Users”的表格,并存儲用戶名和密碼。
我們創(chuàng)建一個新的項目,并在其中創(chuàng)建一個新的類“UsersProvider”。
“`
public class UsersProvider extends ContentProvider {
private SQLiteDatabase db;
@Override
public boolean onCreate() {
UsersOpenHelper helper = new UsersOpenHelper(getContext());
db = helper.getWritableDatabase();
return true;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
long id = db.insert(“Users”, null, values);
getContext().getContentResolver().notifyChange(uri, null);
return Uri.withAppendedPath(uri, Long.toString(id));
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
return db.query(“Users”, null, selection, selectionArgs, null, null, sortOrder);
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
int rows = db.update(“Users”, values, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return rows;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int rows = db.delete(“Users”, selection, selectionArgs);
getContext().getContentResolver().notifyChange(uri, null);
return rows;
}
@Override
public String getType(Uri uri) {
return null;
}
}
“`
在上面的代碼中,我們創(chuàng)建了一個名為“UsersProvider”的ContentProvider。我們將“UsersProvider”中的每個方法逐一解釋如下:
– onCreate() – 在創(chuàng)建“UsersProvider”時調用。在此方法中,我們初始化數(shù)據(jù)庫并返回true。
– insert() – 在添加新數(shù)據(jù)時調用。在此方法中,我們將新數(shù)據(jù)添加到數(shù)據(jù)庫中,并使用Uri返回新添加的數(shù)據(jù)的ID。
– query() – 在讀取數(shù)據(jù)庫中的數(shù)據(jù)時調用。在此方法中,我們查詢數(shù)據(jù)庫中的數(shù)據(jù)并返回一個Cursor對象。
– update() – 在更新數(shù)據(jù)庫中的數(shù)據(jù)時調用。在此方法中,我們更新數(shù)據(jù)庫中的數(shù)據(jù),并使用Uri返回所更新的數(shù)據(jù)的ID。
– delete() – 在刪除數(shù)據(jù)庫中的數(shù)據(jù)時調用。在此方法中,我們刪除數(shù)據(jù)庫中的數(shù)據(jù),并使用Uri返回所刪除的數(shù)據(jù)的ID。
– getType() – 根據(jù)傳入的URI返回相應的MIME類型。
我們還需要實現(xiàn)一個類“UsersOpenHelper”,用于創(chuàng)建和升級數(shù)據(jù)庫。
“`
public class UsersOpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = “mydb”;
private static final int DATABASE_VERSION = 1;
public UsersOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = “CREATE TABLE Users (_id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT, password TEXT);”;
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(“DROP TABLE IF EXISTS Users;”);
onCreate(db);
}
}
“`
在上面的代碼中,我們創(chuàng)建了一個名為“UsersOpenHelper”的SQLiteOpenHelper類。我們將“UsersOpenHelper”中的每個方法逐一解釋如下:
– 構造函數(shù) – 在創(chuàng)建新的“UsersOpenHelper”時調用。在此方法中,我們指定數(shù)據(jù)庫的名稱和版本號。
– onCreate() – 在創(chuàng)建數(shù)據(jù)庫時調用。在此方法中,我們創(chuàng)建一個名為“Users”的表格。
– onUpgrade() – 在升級數(shù)據(jù)庫時調用。在此方法中,我們刪除“Users”表格并重新創(chuàng)建它。
3. 添加權限
在我們的應用程序中使用共享數(shù)據(jù)庫之前,我們需要在AndroidManifest.xml文件中添加適當?shù)臋嘞蕖?/p>
“`
“`
在上面的代碼中,我們添加了WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE權限,以便我們的應用程序能夠訪問存儲設備上的數(shù)據(jù)庫。
4. 使用共享數(shù)據(jù)庫
現(xiàn)在我們已經(jīng)創(chuàng)建了一個共享數(shù)據(jù)庫,并添加了適當?shù)臋嘞?。我們可以在我們的應用程序中使用這個共享數(shù)據(jù)庫了。我們可以通過以下代碼獲取共享數(shù)據(jù)庫的Uri:
“`
Uri uri = Uri.parse(“content://com.example.myapp.UsersProvider/Users”);
“`
其中,“com.example.myapp”是你的應用程序的包名,“UsersProvider”是你創(chuàng)建的ContentProvider的名稱,“Users”是你創(chuàng)建的表格的名稱。
我們可以使用以下代碼將數(shù)據(jù)添加到數(shù)據(jù)庫中:
“`
ContentValues values = new ContentValues();
values.put(“username”, “test”);
values.put(“password”, “123456”);
getContentResolver().insert(uri, values);
“`
我們還可以使用以下代碼從數(shù)據(jù)庫中獲取數(shù)據(jù):
“`
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String username = cursor.getString(cursor.getColumnIndex(“username”));
String password = cursor.getString(cursor.getColumnIndex(“password”));
// Do something with the data
}
cursor.close();
}
“`
我們可以使用類似的方式更新和刪除數(shù)據(jù)。
5.
在本文中,我們介紹了如何在Android中實現(xiàn)全局共享數(shù)據(jù)庫。我們使用ContentProvider將不同應用程序的數(shù)據(jù)共享在同一個數(shù)據(jù)庫中。通過ContentProvider,我們可以輕松地在多個應用程序之間共享數(shù)據(jù)。
相關問題拓展閱讀:
- 要怎么實現(xiàn)android的sqlite 和 網(wǎng)站上的SqlServer的數(shù)據(jù)同步
要怎么實現(xiàn)android的sqlite 和 網(wǎng)站上的SqlServer的數(shù)據(jù)同步
1、查詢SQL中的所有表: Select TABLE_NAME FROM 數(shù)據(jù)庫名稱.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE=’BASE TABLE’ 執(zhí)行之后,就可以看到數(shù)據(jù)庫中所有屬于自己建的表的名稱 2、查詢SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = ‘伍兆u’) AND (NOT (dbo.sysobjects.name LIKE ‘dtproperties’)) 3、在Sql查詢分析器,還有一個簡單的查詢方法: EXEC sp_MSforeachtable @command1=”sp_spaceused ‘?'” 執(zhí)行完之后,就可以看到數(shù)據(jù)庫塌橘敬中所有用戶表的信息 4、查詢總存儲過程數(shù):select count(*) 總存儲過程數(shù) from sysobjects where xtype=’p’ 附:xtype類型D = 默認值或 DEFAULT 約束
F = FOREIGN KEY 約束L = 日志FN = 標量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復制篩選存儲過程S = 系統(tǒng)表TF = 表函數(shù)
TR = 觸發(fā)器U = 用戶表UQ = UNIQUE 約束(類型是 K)V = 視圖X = 擴展存儲過程 另:在sqlserver中取得某個數(shù)據(jù)庫中所有表名的sql語句 select sysobjects.name from sysobjects.xtype =’U’;SELECT name
WHERE (xtype = ‘團慎U’) 在數(shù)據(jù)庫的sysobjects表里有這個數(shù)據(jù)庫全部表的信息, xtype值為’U’的就是表名 注意:一般通過上述方法獲得全部用戶表示都會有一個dtproperties表,SQLSERVER 默認它也是用戶表,想要從用戶表中排出,需要加上限定條件 status>0,即:select * from sysobjects where xtype=’U’ and status>0
android 全局共享數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于android 全局共享數(shù)據(jù)庫,Android實現(xiàn)全局共享數(shù)據(jù)庫,要怎么實現(xiàn)android的sqlite 和 網(wǎng)站上的SqlServer的數(shù)據(jù)同步的信息別忘了在本站進行查找喔。
香港服務器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務提供商,擁有超過10年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務器、香港云服務器、免備案服務器等。
當前文章:Android實現(xiàn)全局共享數(shù)據(jù)庫(android全局共享數(shù)據(jù)庫)
文章出自:http://www.dlmjj.cn/article/dhidihs.html


咨詢
建站咨詢
