當前位置:首頁 » 安卓系統 » android資料庫

android資料庫

發布時間: 2022-01-24 22:42:29

❶ Android一般採用什麼資料庫

用的Eclipse,數據量的話還可以把,因為是初學,所以就打算先少弄幾個景點先試試,我想的是能不能做到應用去鏈接一個遠端的資料庫,就是比方說點開一個景點信息,它是從資料庫中下載出來的。。額。。專業的我也不會說。。

❷ 如何進行Android資料庫操作

Android資料庫操作類實例
實體類:UserInfo.java
package my.db;
import java.io.Serializable;
import android.graphics.drawable.Drawable;
public class UserInfo implements Serializable {
public static final String ID = "_id";
public static final String USERID = "userId";
public static final String TOKEN = "token";
public static final String TOKENSECRET = "tokenSecret";
public static final String USERNAME = "userName";
public static final String USERICON = "userIcon";
private String id;
private String userId; // 用戶id
private String token;
private String tokenSecret;
private String userName;
private Drawable userIcon;
//getter and setter省略
}
sqliteHelper類:
package my.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class SqliteHelper extends SQLiteOpenHelper{
//用來保存UserID、Access Token、Access Secret的表名
public static final String TB_NAME= "users";
public SqliteHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
//創建表
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL( "CREATE TABLE IF NOT EXISTS "+
TB_NAME+ "("+
UserInfo. ID+ " integer primary key,"+
UserInfo. USERID+ " varchar,"+
UserInfo. TOKEN+ " varchar,"+
UserInfo. TOKENSECRET+ " varchar,"+
UserInfo. USERNAME+ " varchar,"+
UserInfo. USERICON+ " blob"+
")"
);
Log. e("Database" ,"onCreate" );
}
//更新表
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL( "DROP TABLE IF EXISTS " + TB_NAME );
onCreate(db);
Log. e("Database" ,"onUpgrade" );
}
//更新列
public void updateColumn(SQLiteDatabase db, String oldColumn, String newColumn, String typeColumn){
try{
db.execSQL( "ALTER TABLE " +
TB_NAME + " CHANGE " +
oldColumn + " "+ newColumn +
" " + typeColumn
);
} catch(Exception e){
e.printStackTrace();
}
}
}
CRUD類DataHelper:
package my.db;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.util.Log;
public class DataHelper {
// 資料庫名稱
private static String DB_NAME = "weibo.db";
// 資料庫版本
private static int DB_VERSION = 2;
private SQLiteDatabase db;
private SqliteHelper dbHelper;
public DataHelper(Context context) {
dbHelper = new SqliteHelper(context, DB_NAME, null, DB_VERSION );
db = dbHelper.getWritableDatabase();
}
public void Close() {
db.close();
dbHelper.close();
}
// 獲取users表中的UserID、Access Token、Access Secret的記錄
public List<UserInfo> GetUserList(Boolean isSimple) {
List<UserInfo> userList = new ArrayList<UserInfo>();
Cursor cursor = db.query(SqliteHelper. TB_NAME, null, null , null, null,
null, UserInfo. ID + " DESC");
cursor.moveToFirst();
while (!cursor.isAfterLast() && (cursor.getString(1) != null )) {
UserInfo user = new UserInfo();
user.setId(cursor.getString(0));
user.setUserId(cursor.getString(1));
user.setToken(cursor.getString(2));
user.setTokenSecret(cursor.getString(3));
if (!isSimple) {
user.setUserName(cursor.getString(4));
ByteArrayInputStream stream = new ByteArrayInputStream(cursor.getBlob(5));
Drawable icon = Drawable.createFromStream(stream, "image");
user.setUserIcon(icon);
}
userList.add(user);
cursor.moveToNext();
}
cursor.close();
return userList;
}
// 判斷users表中的是否包含某個UserID的記錄
public Boolean HaveUserInfo(String UserId) {
Boolean b = false;
Cursor cursor = db.query(SqliteHelper. TB_NAME, null, UserInfo.USERID
+ "=?", new String[]{UserId}, null, null, null );
b = cursor.moveToFirst();
Log. e("HaveUserInfo", b.toString());
cursor.close();
return b;
}
// 更新users表的記錄,根據UserId更新用戶昵稱和用戶圖標
public int UpdateUserInfo(String userName, Bitmap userIcon, String UserId) {
ContentValues values = new ContentValues();
values.put(UserInfo. USERNAME, userName);
// BLOB類型
final ByteArrayOutputStream os = new ByteArrayOutputStream();
// 將Bitmap壓縮成PNG編碼,質量為100%存儲
userIcon.compress(Bitmap.CompressFormat. PNG, 100, os);
// 構造SQLite的Content對象,這里也可以使用raw
values.put(UserInfo. USERICON, os.toByteArray());
int id = db.update(SqliteHelper. TB_NAME, values, UserInfo.USERID + "=?" , new String[]{UserId});
Log. e("UpdateUserInfo2", id + "");
return id;
}
// 更新users表的記錄
public int UpdateUserInfo(UserInfo user) {
ContentValues values = new ContentValues();
values.put(UserInfo. USERID, user.getUserId());
values.put(UserInfo. TOKEN, user.getToken());
values.put(UserInfo. TOKENSECRET, user.getTokenSecret());
int id = db.update(SqliteHelper. TB_NAME, values, UserInfo.USERID + "="
+ user.getUserId(), null);
Log. e("UpdateUserInfo", id + "");
return id;
}
// 添加users表的記錄
public Long SaveUserInfo(UserInfo user) {
ContentValues values = new ContentValues();
values.put(UserInfo. USERID, user.getUserId());
values.put(UserInfo. TOKEN, user.getToken());
values.put(UserInfo. TOKENSECRET, user.getTokenSecret());
Long uid = db.insert(SqliteHelper. TB_NAME, UserInfo.ID, values);
Log. e("SaveUserInfo", uid + "");
return uid;
}
// 添加users表的記錄
public Long SaveUserInfo(UserInfo user, byte[] icon) {
ContentValues values = new ContentValues();
values.put(UserInfo. USERID, user.getUserId());
values.put(UserInfo. USERNAME, user.getUserName());
values.put(UserInfo. TOKEN, user.getToken());
values.put(UserInfo. TOKENSECRET, user.getTokenSecret());
if(icon!= null){
values.put(UserInfo. USERICON, icon);
}
Long uid = db.insert(SqliteHelper. TB_NAME, UserInfo.ID, values);
Log. e("SaveUserInfo", uid + "");
return uid;
}
// 刪除users表的記錄
public int DelUserInfo(String UserId) {
int id = db.delete(SqliteHelper. TB_NAME,
UserInfo. USERID + "=?", new String[]{UserId});
Log. e("DelUserInfo", id + "");
return id;
}
public static UserInfo getUserByName(String userName,List<UserInfo> userList){
UserInfo userInfo = null;
int size = userList.size();
for( int i=0;i<size;i++){
if(userName.equals(userList.get(i).getUserName())){
userInfo = userList.get(i);
break;
}
}
return userInfo;
}
}

❸ android 資料庫文件存在哪裡

默認路徑是/data/data/然後是你創建的包名,然後就找到你創建的資料庫名字了

❹ android資料庫怎麼建立

如果要操作一些簡單的數據的話,用安卓手機自帶的SQLite資料庫就完全可以實現,SQLite是輕量級資料庫;如果操作大型的資料庫如Sql Server,就要聯網通過Web Service進行操作了。

❺ android 怎麼往資料庫裡面添加數據

一、引入
資料庫創建的問題解決了,接下來就該使用資料庫實現應用程序功能的時候了。基
本的操作包括創建、讀取、更新、刪除,即我們通常說的 CRUD(Create, Read, Update, Delete)。
在實現這些操作的時候,我們會使用到兩個比較重要的類 SQLiteDatabase 類和 Cursor 類。

二、創建表
1,execSQL(String sql):執行一條 sql 語句,且執行操作不能為 SELECT
因為它的返回值為 void,所以推薦使用 insert、update 方法等
2.,execSQL (String sql,Object[] bindArgs)
sql:執行一條 sql 語句
bindArgs:為 sql 語句中的?賦值

三、添加數據
1、execSQL(String sql)
2、使用對象的 insert 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
db.insert(TABLE_NAME, null, values);
參數:
table:資料庫中的表名
nullColumnHack:指定默認插入欄位,為 null 時能插入數據
values:表示插入欄位所對應的值,使用 put 方法。

四、刪除數據
1、execSQL(String sql)
2、使用對象的 delete 方法
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(id)};
//db.delete(TABLE_NAME, "_id="+id, null);
db.delete(TABLE_NAME, whereClaues, whereArgs);
參數
table:資料庫的表名
whereClause:where 子句,比如:_id=?
whereArgs:where 子句中?的值

五、修改數據
1、execSQL(String sql)
2、使用對象的 delete 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(user.getId())};
db.update(TABLE_NAME, values, whereClaues, whereArgs);
參數
table:資料庫的表名
values:代表要修改的值,修改方法還是 put(key,values)
whereClause:條件子句,比如 id=?,name=?
whereArgs:為 whereClause 中的?賦值,比如:new String[]{"1","張三"}

圖:

參考代碼:

程序內使用SQLite資料庫是通過SQLiteOpenHelper進行操作

1.自己寫個類繼承SQLiteOpenHelper,重寫以下3個方法

publicvoidonCreate(SQLiteDatabasedb)

{//創建資料庫時的操作,如建表}

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)

{

//版本更新的操作

}

2.通過SQLiteOpenHelper的getWritableDatabase()獲得一個SQLiteDatabase資料庫,以後的操作都是對SQLiteDatabase進行操作。

3.對得到的SQLiteDatabase對象進行增,改,刪,查等操作。

代碼

packagecx.myNote;

importandroid.content.ContentValues;

importandroid.content.Context;

importandroid.content.Intent;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

importandroid.database.sqlite.SQLiteOpenHelper;

//DBOptionsforlogin

publicclassDBOptions{

privatestaticfinalStringDB_NAME="notes.db";

privatestaticfinalStringDB_CREATE="createtablelogininf(nametext,pwdtext)";

{

publicDBHelper(Contextcontext){

super(context,DB_NAME,null,1);

}

@Override

publicvoidonCreate(SQLiteDatabasedb){

//TODOAuto-generatedmethodstub

//建表

db.execSQL(DB_CREATE);

}

@Override

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){

//TODOAuto-generatedmethodstub

db.execSQL("droptableifexistslogininf");

onCreate(db);

}

}

privateContextcontext;

privateSQLiteDatabasedb;

privateDBHelperdbHelper;

publicDBOptions(Contextcontext)

{

this.context=context;

dbHelper=newDBHelper(context);

db=dbHelper.getReadableDatabase();

}

//自己寫的方法,對資料庫進行操作

publicStringgetName()

{

Cursorcursor=db.rawQuery("selectnamefromlogininf",null);

cursor.moveToFirst();

returncursor.getString(0);

}

publicintchangePWD(StringoldP,Stringpwd)

{

ContentValuesvalues=newContentValues();

values.put("pwd",pwd);

returndb.update("logininf",values,"pwd="+oldP,null);

}

}


insert方法插入的一行記錄使用ContentValus存放,ContentValues類似於Map,它提供了put(String key, Xxx value)(其中key為數據列的列名)方法用於存入數據、getAsXxxx(String key)方法用於取出數據

❻ 安卓開發,用什麼資料庫作為本地資料庫

android系統自帶了sqlite資料庫,但這是一個小型桌面資料庫,不太適合做伺服器資料庫。若是開發一個客戶機/伺服器系統,資料庫是安裝在伺服器端的,任何一種資料庫都是可以的。

❼ android中在怎麼獲取資料庫數據

android讀取資料庫可以使用sqlite一些api進行讀取,實例如下:
/**
* 查找一條數據
* @param uid
*/
public User find(Integer uid){
SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); //創建資料庫輔助類
Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()}); //創建一個游標
if(cursor.moveToFirst()){ //循環遍歷查找數組
int uid2=cursor.getInt(cursor.getColumnIndex("uid"));
String uname=cursor.getString(cursor.getColumnIndex("uname"));
String uaddress=cursor.getString(cursor.getColumnIndex("uaddress"));
User user=new User();
user.setUid(uid2);
user.setUname(uname);
user.setUaddress(uaddress);
return user;
}
cursor.close();
return null;
}

❽ 如何連接android資料庫

關系型資料庫SQLite3,它是一個支持SQL輕量級的嵌入式資料庫,在嵌入式操作上有很廣泛的,WM採用的也是SQLite3

關於過於、原理方面的東西在這篇文章里不會提到,但是如果你想能夠快速的學會操作SQLite3,那這就是你要找的文章!

首先,我們看一下api,所有資料庫相關的介面、類都在.database和android.database.sqlite兩個包下,雖然只有兩個包,但是如果你英文不好或是太懶的話也要迷茫一段時間,其實,我們真正用的到的沒有幾個!

1、SQLiteOpenHelper (android.database.sqlite.SQLiteOpenHelper)

這是一個抽象類,關於抽象類我們都知道,如果要使用它,一定是繼承它!

這個類的方法很少,有一個構造方法

SQLiteOpenHelper(android.content.Context context, java.lang.String name,android.database.sqlite.SQLiteDatabase.CursorFactory factory, int version);

參數不做過多的解釋,CursorFactory一般直接傳null就可以

public void onCreate(SQLiteDatabase db)

此方法在創建資料庫是被調用,所以,應該把創建表的操作放到這個方法裡面,一會兒在後面我們會再詳細的說如何創建表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

從方法名上我們就能知道這個方法是執行更新的,沒錯,當version改變是系統會調用這個方法,所以在這個方法里應該執行刪除現有表,然後手動調用onCreate的操作

SQLiteDatabase getReadableDatabase()

可讀的SQLiteDatabase對象

SQLiteDatabase getWritableDatabase()

獲取可寫的SQLiteDatabase對象

2、SQLiteDatabase(android.database.sqlite.SQLiteDatabase)

關於操作資料庫的工作(增、刪、查、改)都在這個類里

execSQL(sql)

執行SQL語句,用這個方法+SQL語句可以非常方便的執行增、刪、查、改

除此之外,Android還提供了功過方法實現增、刪、查、改

long insert(TABLE_NAME, null, contentValues)添加記錄

int delete(TABLE_NAME, where, whereValue)刪除記錄

int update(TABLE_NAME, contentValues, where, whereValue) 更新記錄

Cursor query(TABLE_NAME, null, null, null, null, null, null) 查詢記錄

除此之外,還有很多方法,如:beginTransaction()開始事務、endTransaction()結束事務...有興趣的可以自己看api,這里就不多贅述了

3、Cursor(android.database.Cursor)

游標(介面),這個很熟悉了吧,Cursor里的方法非常多,常用的有:

boolean moveToPosition(position)將指針移動到某記錄

getColumnIndex(Contacts.People.NAME)按列名獲取id

int getCount()獲取記錄總數

boolean requery()重新查詢

boolean isAfterLast()指針是否在末尾

boolean isBeforeFirst()時候是開始位置

boolean isFirst()是否是第一條記錄

boolean isLast()是否是最後一條記錄

boolean moveToFirst()、 boolean moveToLast()、 boolean moveToNext()同moveToPosition(position)

4、SimpleCursorAdapter(android.widget.SimpleCursorAdapter)

也許你會奇怪了,之前我還說過關於資料庫的操作都在database和database.sqlite包下,為什麼把一個Adapter放到這里,如果你用過Android的SQLite3,你一定會知道

,這是因為我們對資料庫的操作會經常跟列表聯系起來

經常有朋友會在這出錯,但其實也很簡單

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,

R.layout.list,

myCursor,

new String[] ,

new int[]);

my.setAdapter(adapter);

一共5個參數,具體如下:

參數1:Content

參數2:布局

參數3:Cursor游標對象

參數4:顯示的欄位,傳入String[]

參數5:顯示欄位使用的組件,傳入int[],該數組中是TextView組件的id

到這里,關於資料庫的操作就結束了,但是到目前為止我只做了翻譯的工作,有些同學可能還是沒有掌握,放心,下面我們一起順著正常開發的思路理清一下頭緒!

前面的只是幫沒做過的朋友做下普及,下面才是你真正需要的!

一、寫一個類繼承SQLiteOpenHelpe

public class DatabaseHelper extends SQLiteOpenHelper

構造方法:

DatabaseHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

在onCreate方法里寫建表的操作

public void onCreate(SQLiteDatabase db) {

String sql = "CREATE TABLE tb_test (_id INTEGER DEFAULT '1' NOT NULL PRIMARY KEY AUTOINCREMENT,class_jb TEXT NOT NULL,class_ysbj TEXT NOT NULL,title TEXT NOT NULL,content_ysbj TEXT NOT NULL)";

db.execSQL(sql);//需要異常捕獲

}

在onUpgrade方法里刪除現有表,然後手動調用onCtreate創建表

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

String sql = "drop table "+tbname;

db.execSQL(sql);

onCreate(db);

}

對表增、刪、查、改的方法,這里用的是SQLiteOpenHelper提供的方法,也可以用sql語句實現,都是一樣的

關於獲取可讀/可寫SQLiteDatabase,我不說大家也應該會想到,只有查找才會用到可讀的SQLiteDatabase

/**

* 添加數據

*/

public long insert(String tname, int tage, String ttel){

SQLiteDatabase db= getWritableDatabase();//獲取可寫SQLiteDatabase對象

//ContentValues類似map,存入的是鍵值對

ContentValues contentValues = new ContentValues();

contentValues.put("tname", tname);

contentValues.put("tage", tage);

contentValues.put("ttel", ttel);

return db.insert(tbname, null, contentValues);

}

/**

* 刪除記錄

* @param _id

*/

public void delete(String _id){

SQLiteDatabase db= getWritableDatabase();

db.delete(tbname,

"_id=?",

new String[]);

}

/**

* 更新記錄的,跟插入的很像

*/

public void update(String _id,String tname, int tage, String ttel){

SQLiteDatabase db= getWritableDatabase();

ContentValues contentValues = new ContentValues();

contentValues.put("tname", tname);

contentValues.put("tage", tage);

contentValues.put("ttel", ttel);

db.update(tbname, contentValues,

"_id=?",

new String[]);

}

/**

* 查詢所有數據

* @return Cursor

*/

public Cursor select(){

SQLiteDatabase db = getReadableDatabase();

return db.query(

tbname,

new String[],

null,

null, null, null, "_id desc");

}

關於db.query方法的參數,有很多,為了防止大家弄亂,我簡單說一下

參數1:表名

參數2:返回數據包含的列信息,String數組里放的都是列名

參數3:相當於sql里的where,sql里where後寫的內容放到這就行了,例如:tage>?

參數4:如果你在參數3里寫了?(知道我為什麼寫tage>?了吧),那個這里就是代替?的值 接上例:new String[]

參數5:分組,不解釋了,不想分組就傳null

參數6:having,想不起來的看看SQL

參數7:orderBy排序

到這里,你已經完成了最多的第一步!我們來看看都用到了那些類:

SQLiteOpenHelper我們繼承使用的

SQLiteDatabase增刪查改都離不開它,即使你直接用sql語句,也要用到execSQL(sql)

二、這里無非是對DatabaseHelper類定義方法的調用,沒什麼可說的,不過我還是對查詢再嘮叨幾句吧

Android查詢出來的結果一Cursor形式返回

cursor = sqLiteHelper.select();//是不是很簡單?

查詢出來的cursor一般會顯示在listView中,這就要用到剛才提到的SimpleCursorAdapter

SimpleCursorAdapter adapter = new SimpleCursorAdapter(

this,

R.layout.list_row,

cursor,

new String[],

new int[]

);

裡面帶有實例。自己好好學習吧!

❾ android 的資料庫有哪些

一般如果是在本地存儲的話,使用的是sqlite,但是如果是app通過網路訪問遠程提供的服務的話,那就多了,基本上主流的資料庫都可以用

熱點內容
伺服器如何搭建多個ip 發布:2024-11-15 19:42:10 瀏覽:102
價錢低高配置的有哪些車 發布:2024-11-15 19:34:53 瀏覽:380
androidgps定位開發 發布:2024-11-15 19:34:52 瀏覽:334
如何掃碼添加伺服器地址 發布:2024-11-15 19:31:48 瀏覽:278
sql語句復制資料庫 發布:2024-11-15 19:28:02 瀏覽:837
演算法的薪資 發布:2024-11-15 19:15:22 瀏覽:322
ubuntu可以重新編譯嗎 發布:2024-11-15 19:09:10 瀏覽:649
access資料庫表的創建 發布:2024-11-15 18:51:18 瀏覽:141
怎麼搭建信令伺服器 發布:2024-11-15 18:48:03 瀏覽:578
如何解鎖安卓手機鎖屏圖 發布:2024-11-15 18:47:48 瀏覽:966