這種方式通常連接一個外部的數(shù)據(jù)庫,第一個參數(shù)就是數(shù)據(jù)庫文件,這個數(shù)據(jù)庫不是當(dāng)前項目中生成的,通常放在項目的Assets目錄下,當(dāng)然也可以在手機內(nèi),如上面參數(shù)那個目錄,前提是那個文件存在且你的程序有訪問權(quán)限。
成都創(chuàng)新互聯(lián)于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元沽源做網(wǎng)站,已為上家服務(wù),為沽源各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792
另一種使用數(shù)據(jù)庫的方式是,自己創(chuàng)建數(shù)據(jù)庫并創(chuàng)建相應(yīng)的數(shù)據(jù)庫表,參考下面的代碼:
public class DatabaseHelper extends SQLiteOpenHelper {
//構(gòu)造,調(diào)用父類構(gòu)造,數(shù)據(jù)庫名字,版本號(傳入更大的版本號可以讓數(shù)據(jù)庫升級,onUpgrade被調(diào)用)
public DatabaseHelper(Context context) {
super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION);
}
//數(shù)據(jù)庫創(chuàng)建時調(diào)用,里面執(zhí)行表創(chuàng)建語句.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createVoucherTable());
}
//數(shù)據(jù)庫升級時調(diào)用,先刪除舊表,在調(diào)用onCreate創(chuàng)建表.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DatabaseConstant.TABLE_NAME);
onCreate(db);
}
//生成 創(chuàng)建表的SQL語句
private String createVoucherTable() {
StringBuffer sb = new StringBuffer();
sb.append(" CREATE TABLE ").append(DatabaseConstant.TABLE_NAME).append("( ").append(“ID”)
.append(" TEXT PRIMARY KEY, ")
.append(“USER_ID”).append(" INTEGER, ").append(“SMS_CONTENT”).append(" TEXT ) ");
return sb.toString();
}
} 繼承SQLiteOpenHelper并實現(xiàn)里面的方法.
之后:
//得到數(shù)據(jù)庫助手類
helper
=
new
DatabaseHelper(context);
//通過助手類,打開一個可讀寫的數(shù)據(jù)庫連接
SQLiteDatabase
database
=
helper.getReadableDatabase();
//查詢表中所有記錄
database.query(DatabaseConstant.TABLE_NAME,
null,
null,
null,
null,
null,
null);
不能與數(shù)據(jù)庫連接的
Android客戶端不能直接與服務(wù)器數(shù)據(jù)庫連接。數(shù)據(jù)庫是需要非常大的內(nèi)存,安裝之后有好幾G,連接數(shù)據(jù)庫要有一個像SQLServer里的webservice,這樣的一個橋梁來間接訪問。就是在服務(wù)器運行一個服務(wù)端程序,該服務(wù)端程序通過接收來自android客戶端的指令,對數(shù)據(jù)庫進行操作。
客戶端的http請求可以通過 HttpClient類實現(xiàn),在anddroid 4.0之后,客戶端的網(wǎng)絡(luò)請求已經(jīng)不被允許在主線程中運行,所以還需注意另開啟一個子線程進行網(wǎng)絡(luò)請求。
擴展資料:
Android安全權(quán)限機制:
Android默認設(shè)置下,所有應(yīng)用都沒有權(quán)限對其他應(yīng)用、系統(tǒng)或用戶進行較大影響的操作。這其中包括讀寫用戶隱私數(shù)據(jù)(聯(lián)系人或電子郵件),讀寫其他應(yīng)用文件,訪問網(wǎng)絡(luò)或阻止設(shè)備待機等。安裝應(yīng)用時,在檢查程序簽名提及的權(quán)限,且經(jīng)過用戶確認后,軟件包安裝器會給予應(yīng)用權(quán)限。
下載一款A(yù)ndroid應(yīng)用通常會要求如下的權(quán)限:撥打電話、發(fā)送短信或彩信、修改/刪除SD卡上的內(nèi)容、讀取聯(lián)系人的信息、讀取日程信的息,寫入日程數(shù)據(jù)、讀取電話狀態(tài)或識別碼、精確的(基于GPS)地理位置、模糊的(基于網(wǎng)絡(luò)獲取)地理位置、創(chuàng)建藍牙連接、
還有對互聯(lián)網(wǎng)的完全訪問、查看網(wǎng)絡(luò)狀態(tài),查看WiFi狀態(tài)、避免手機待機、修改系統(tǒng)全局設(shè)置、讀取同步設(shè)定、開機自啟動、重啟其他應(yīng)用、終止運行中的應(yīng)用、設(shè)定偏好應(yīng)用、震動控制、拍攝圖片等。
參考資料來源:百度百科——Android
Android客戶端直接連接遠程MySQL數(shù)據(jù)庫的方法如下:
String result = "";
//首先使用NameValuePair封裝將要查詢的年數(shù)和關(guān)鍵字綁定
ArrayListNameValuePair nameValuePairs = new ArrayListNameValuePair();
nameValuePairs.add(new BasicNameValuePair("year","1980"));
//使用HttpPost封裝整個SQL語句
//使用HttpClient發(fā)送HttpPost對象
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//將HttpEntity轉(zhuǎn)化為String
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//將String通過JSONArray解析成最終結(jié)果
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;ijArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","id: "+json_data.getInt("id")+
", name: "+json_data.getString("name")+
", sex: "+json_data.getInt("sex")+
", birthyear: "+json_data.getInt("birthyear")
);
}
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
雖然Android開發(fā)中可以直接連接數(shù)據(jù)庫,但是實際中卻不建議這么做,應(yīng)該使用服務(wù)器端中轉(zhuǎn)下完成。
通過cmd可對數(shù)據(jù)庫進行訪問,現(xiàn)在開發(fā)android一般都用的eclipse+adt+sdk;進入cmd輸入adb shell ,然后 cd /data/data 再ls 顯示所有的包名,cd 到你的包名,然后 cd databases 再ls 顯示你的數(shù)據(jù)庫名 ,最后 sqlite3 數(shù)據(jù)庫名 ,更多查看安卓巴士:
用Eclipse開發(fā)android,怎么連接到數(shù)據(jù)庫,解決辦法:
1.先將安卓手機連接到電腦上,安裝驅(qū)動(應(yīng)該是自動安裝并連接的),根據(jù)提示點擊安裝即可。安裝之后呢,右擊“計算機”—“管理”—–“設(shè)備管理器”中可以看到Android USB Devices。
2.打開Eclipse,在菜單中“windows”—“show view”—-選擇“Devices”(有時候device在other→android里才能找到)然后在Eclipse中的下面就能看到你的手機已經(jīng)連接上了。
3.創(chuàng)建一個Android項目,例如Helloword;運行該程序,右鍵點擊項目名稱,選擇“運行方式”—“Android Application”彈出窗口
4.選擇第一項,就可以用手機調(diào)試了。點確定即可。這時候你會發(fā)現(xiàn)你的手機已經(jīng)成功運行你編寫的APP。
第二種辦法:
通過cmd可對數(shù)據(jù)庫進行訪問,現(xiàn)在開發(fā)android一般都用的eclipse+adt+sdk。
進入cmd輸入adbshell ,然后cd /data/data 再ls 顯示所有的包名,cd 到你的包名,然后 cd databases再ls顯示你的數(shù)據(jù)庫名 ,
最后sqlite3數(shù)據(jù)庫名 就可以對數(shù)據(jù)庫進行操作了。