平時見到的android資料庫操作一般都是在程序開始時創建一個空的資料庫,然後再進行相關操作。如果需要使用一個已有數據的資料庫怎麼辦呢?
都知道android系統下資料庫應該存放在 /data/data/com.*.*(package name)/ 目錄下,所以需要做的是把已有的資料庫傳入那個目錄下。操作方法是用FileInputStream讀取原資料庫,再用FileOutputStream把讀取到的東西寫入到那個目錄。
❷ 如何往android中添加資料庫
一、新建外部SQLite資料庫
(1)下載並安裝 SQLite可視化管理工具(SQLite Expert Pro) v3.4.17 破解版
http://www.cr173.com/soft/36343.html
(2)將你手頭上的數據放到EXCEL表格中,保存為CSV格式的數據
(3)在此工具中按照你現有的數據格式新建資料庫和表,如資料庫為:contact.db,表為employee
(4)通過此工具菜單欄中Import/Export下的Import text file(CSV,TSC)功能,將你現有的CSV數據導入到你新建的數據表中(主要目的是省的一個一個的錄入了)
二、在eclipse中新建一個android app工程,並在新建的工程文件夾點右鍵new->folder,在res文件夾下新建raw文件夾(如果有就不用新建了)
三、用滑鼠將新建的SQLite資料庫文件contact.db拖動到新建工程的res下的raw文件下,出現提示,選擇
四、程序代碼
private static final String DATABASE_PATH = "/data/data/你的主程序包路徑(如:com.szair.contact)/databases";
private static final int DATABASE_VERSION = 0;
private static final String DATABASE_NAME = "contact.db";
private static String outFileName = DATABASE_PATH + "/" + DATABASE_NAME;
try {
buildDatabase();//見下
} catch (Exception e) {
e.printStackTrace();
}
//SQLiteDatabase對象
SQLiteDatabase db=SQLiteDatabase.openDatabase(outFileName, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS);
String t="SELECT 欄位名1,欄位名2 FROM employee WHERE **** ORDER BY ***";
Cursor c =db.rawQuery(t, null);
if(c.moveToFirst()){
for(int i=0;i
{
String zian1=c.getString(0);//欄位1的數據
String zian2=c.getString(1);//欄位1的數據
}
}
------------------------------------------------
//前面用到的buildDatabase方法
private void buildDatabase() throws Exception{
InputStream myInput = getResources().openRawResource(R.raw.sz_contact);
File file = new File(outFileName);
File dir = new File(DATABASE_PATH);
if (!dir.exists()) {
if (!dir.mkdir()) {
throw new Exception("創建失敗");
}
}
if (!file.exists()) {
try {
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
int length;
while ((length = myInput.read(buffer))>0){
myOutput.write(buffer, 0, length);
}
myOutput.close();
myInput.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
五、程序發布
按照以上方式,可以將外部建的SQLite資料庫成功的發布出來
❸ 如何導入已有的外部資料庫
導入已有的外部資料庫的方法:
第一種是右擊資料庫,然後點擊附加。出現下面的界面。然後選擇添加,添加上你要添加的mdf文件即可。
第二種方法是:新建查詢,然後輸入下列語句,
EXEC sp_attach_db @dbname = 'yourdatabasename',
@filename1 = 'x:\路徑\MSSQL\Data\pubs.mdf',
@filename2 = 'x:\路徑\MSSQL\Data.Ldf
❹ android怎麼使用外部的資料庫文件
先簡來單說下步驟:
將格式為源.db的資料庫文件放到android項目assets目錄中;
在程序必要的時候,將其「拷貝」(文件讀取)到Android 程序默認的資料庫存儲目錄中,一般路徑為「/data/data/項目包名/databases/「;
自定義SQLiteOpenHelper類,創建一個名字跟步驟1中.db名稱一樣的資料庫;
按照平常邏輯,增刪改查資料庫。
❺ android 怎麼替換外部資料庫
1. 把原資料庫包括在項目源碼的 res/raw 目錄下,然後建立一個DBManager類,代碼如下:
package com.android.ImportDatabase;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.util.Log;
public class DBManager {
private final int BUFFER_SIZE = 400000;
public static final String DB_NAME = "countries.db"; //保存的資料庫文件名
public static final String PACKAGE_NAME = "com.android.ImportDatabase";
public static final String DB_PATH = "/data"
+ Environment.getDataDirectory().getAbsolutePath() + "/"
+ PACKAGE_NAME; //在手機里存放資料庫的位置
private SQLiteDatabase database;
private Context context;
DBManager(Context context) {
this.context = context;
}
public void openDatabase() {
this.database = this.openDatabase(DB_PATH + "/" + DB_NAME);
}
private SQLiteDatabase openDatabase(String dbfile) {
try {
if (!(new File(dbfile).exists())) {//判斷資料庫文件是否存在,若不存在則執行導入,否則直接打開資料庫
InputStream is = this.context.getResources().openRawResource(
R.raw.countries); //欲導入的資料庫
FileOutputStream fos = new FileOutputStream(dbfile);
byte[] buffer = new byte[BUFFER_SIZE];
int count = 0;
while ((count = is.read(buffer)) > 0) {
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile,
null);
return db;
} catch (FileNotFoundException e) {
Log.e("Database", "File not found");
e.printStackTrace();
} catch (IOException e) {
Log.e("Database", "IO exception");
e.printStackTrace();
}
return null;
}
//do something else here<br>
public void closeDatabase() {
this.database.close();
}
}
然後在程序的首個Activity中示例化一個DBManager對象,然後對其執行openDatabase方法就可以完成導入了,可以把一些要對資料庫進行的操作寫在DBManager類里,然後通過DBManager類的對象調用;也可以在完成導入之後通過一個SQliteDatabase類的對象打開資料庫,並執行操作。
我的做法是 在程序的首個Activity中導入資料庫:
package com.android.ImportDatabase;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class RootView extends Activity {
public DBManager dbHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dbHelper = new DBManager(this);
dbHelper.openDatabase();
dbHelper.closeDatabase();
}
}
此時在DDMS中可以查看到,外部資料庫已經成功導入
❻ Android 怎麼連接遠程資料庫
一般是不會直接連接資料庫的,就像我們瀏覽網站一樣,也是通過後端程序連接資料庫的。
若你需要的是嵌入資料庫,那另外的說法,MySQL提供嵌入式版本很輕量的
❼ android訪問其他資料庫需要什麼許可權
如果您需要讓某些登錄用戶具有不同的訪問許可權,請確保用戶資料庫表格包含一個特定的列,該列指定每個用戶的訪問許可權(「來賓」、「用戶」、「管理員」等)。每個用戶的訪問許可權應該由站點管理員在資料庫中輸入。
在大多數資料庫應用程序中,每當新建一個記錄時,可以將一個列設置為默認值。將該默認值設置為站點上最常用的訪問許可權(例如「來賓」);然後手動更改例外的情況(例如,將「來賓」更改為「管理員」)。用戶現在即可訪問所有管理員頁。
確保資料庫中的每個用戶都具有單一的訪問許可權(例如「來賓」或「管理員」),而不是多項許可權(例如「用戶、管理員」)。如果要為您的頁設置多項訪問許可權(例如,所有來賓和管理員都可以查看該頁),則在頁級別(而不是在資料庫級別)設置這些許可權。
安裝 Lync Server 2010 的用戶必須具有 Schema Admins 組許可權,當然還必須要具備 Domain Admins組許可權 和 Enterprise Admins組許可權。
1.安裝
2.安裝拓撲生成器
3.生成拓撲
然後選擇拓撲文件存放位置
主SIP域,一般為主域名 例如 contoso.
有沒有額外的域,如果沒有直接下一步
每個部署必須至少聚友一個站點。如果您的部署具有多個站點,以後可以使用「新建站點」向導添加其他站點。
定義一個相應版本的FQDN名稱
當前前端伺服器池中的伺服器FQDN名稱
勾選功能
安裝SQL伺服器的 FQDN名稱
定義一個共享文件夾,用於存放會議PPT等文件,注意:此共享不要在前端伺服器上。
公網域名
如果有,需要指定PSTN的網關IP地址
4. AD准備完成後,需要做兩方面的准備
1.需要把管理Lync的賬號加入 SCAdminitrator組 和 RTCUniversalServerAdmins 組
2.在DNS中添加A記錄
pool.contoso.
admin.contoso. 指向前端伺服器
meet.contoso. 會議
dialin.contoso. 電話撥入
按照Android的流程,創建資料庫的程序應該提高一個Provider,這樣另外的程序就可以通過這個Provider來訪問這個資料庫了。
你都不是安全登錄的,沒有建庫的許可權,重新退出mysql,
在cmd下執行 mysql -u root -p密碼<img id="selectsearch-icon" src=:img../img/iknow/qb/select-search.png alt="搜索">
許可權必須是系統管理員administrator的完全控制
select * from openrowset( 'SQLOLEDB ', 'sql伺服器名 ' '用戶名 ' '密碼 ',資料庫名.dbo.表名)
許可權 是指為了保證職責的有效履行,任職者必須具備的,對某事項進行決策的范圍和程度。它常常用「具有批准……事項的許可權」來進行表達。例如,具有批准預算外5000元以內的禮品費支出的許可權。
只有在需要讓某些登錄用戶具有不同的訪問許可權時,該構造塊才是必需的。如果您只是要求用戶登錄,則不需要存儲訪問許可權。
如果您需要讓某些登錄用戶具有不同的訪問許可權,請確保用戶資料庫表格包含一個特定的列,該列指定每個用戶的訪問許可權(「來賓」、「用戶」、「管理員」等)。每個用戶的訪問許可權應該由站點管理員在資料庫中輸入。
在大多數資料庫應用程序中,每當新建一個記錄時,可以將一個列設置為默認值。將該默認值設置為站點上最常用的訪問許可權(例如「來賓」);然後手動更改例外的情況(例如,將「來賓」更改為「管理員」)。用戶現在即可訪問所有管理員頁。
確保資料庫中的每個用戶都具有單一的訪問許可權(例如「來賓」或「管理員」),而不是多項許可權(例如「用戶、管理員」)。如果要為您的頁設置多項訪問許可權(例如,所有來賓和管理員都可以查看該頁),則在頁級別(而不是在資料庫級別)設置這些許可權。
PrintPreviewDialog pPDlg;
exec_prefix='NONE'PACKAGE='libevent'
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_URL=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
資料庫支持,無論生命線的大小每一個應用程序,除非你的應用程序只能處理簡單的數據,你需要一個資料庫系統來存儲你的結構化數據,使用SQLite資料庫,這是一個開源的Android,支持多操作系統的SQL資料庫廣泛應用於許多領域,如Mozilla Firefox是使用SQLite的存儲配置數據,iPhone還使用SQLite來存儲數據。
在Android中,您創建一個應用程序的資料庫,只有它可以訪問,其他應用程序無法訪問位於Android設備/數據/數據/ /資料庫文件夾中的資料庫,在這篇文章中,您將學習如何創建和使用在Android的資料庫。
SQLite資料庫
使用Eclipse創建一個Android項目,命名資料庫,如圖1:
中國1資料庫 - 使用Eclipse創建新項目的Android
創建最佳實踐DBAdapter資料庫的輔助類
操作是創建一個輔助類,它封裝了訪問資料庫的所有復雜性,調用代碼來講它是透明的,所以我創建了一個幫手DBAdapter類,創建,打開,關閉和使用SQLite資料庫它。
首先,在src /文件夾(在本實施例中的src / .learn2develop.Database)下一個DBAdapter.java文件中的溶液。
在DBAdapter.java文件要使用導入所有的命名空間:
- 軟體包.learn2develop.Databases;
中國進口android.content.ContentValues;
進口android.content.Context;
進口android.database.Cursor;
進口android.database.SQLException;
進口android.database.sqlite.SQLiteDatabase;
進口android.database.sqlite .SQLiteOpenHelper;
進口android.util.Log;
公共類DBAdapter
{}
中國接下來,創建一個資料庫,名為bookstitles,如圖所示領域。
中國2資料庫欄位酒店在DBAdapter.java文件,如清單1
文件清單1中定義的常量定義DBAdapter.java不斷
包.learn2develop.Database;
進口android.content.ContentValues;
進口android.content。語境;
進口android.database.Cursor;
進口android.database.SQLException;
進口android.database.sqlite.SQLiteDatabase;
進口android.database.sqlite.SQLiteOpenHelper;
進口android.util.Log;
公共類DBAdapter
{
公共靜態最後弦樂KEY_ROWID = _id;
公共靜態最後弦樂KEY_ISBN = ISBN;
公共靜態最後弦樂KEY_TITLE =稱號;
公共靜態最後弦樂KEY_PUBLISHER =發行;
私有靜態最後字元串變數= DBAdapter;
私有靜態最後弦樂DATABASE_NAME =書籍;
私有靜態最後弦樂DATABASE_TABLE =職稱;
私有靜態最終詮釋DATABASE_VERSION = 1;
私有靜態最後弦樂DATABASE_CREATE =
創建表的標題(_id整數主鍵自動增量,
+ ISBN文本不為空,標題文本不為空,
+出版商文字NOT NULL); ;
私人最終上下文語境;
}
DATABASE_CREATE常數包括標題表創建SQL語句。
在DBAdapter類,你可以擴展SQLiteOpenHelper類,這是一款Android輔助類,主要用於創建資料庫和版本管理。事實上,你可以覆蓋的onCreate()和onUpgrade()方法,如清單2所示清單2.
DBAdapter類,涵蓋了SQLiteOpenHelper的onCreate()和onUpgrade()方法登錄到到網擴展類 - 軟體包.learn2develop.Database;
中國進口的Android。 content.ContentValues;
進口android.content.Context;
進口android.database.Cursor;
進口android.database.SQLException;
進口android.database.sqlite.SQLiteDatabase;
進口android.database.sqlite.SQLiteOpenHelper;
進口android.util.Log;
公共類DBAdapter
{
公共靜態最後弦樂KEY_ROWID = _id;
公共靜態最後弦樂KEY_ISBN = ISBN;
公共靜態最後弦樂KEY_TITLE =稱號;
公共靜態最後弦樂KEY_PUBLISHER =發行;
私有靜態最後字元串變數= DBAdapter;
私有靜態最後弦樂DATABASE_NAME =書籍;
私有靜態最後弦樂DATABASE_TABLE =職稱;
私有靜態最終詮釋DATABASE_VERSION = 1;
私有靜態最後弦樂DATABASE_CREATE =
創建表的標題(_id整數主鍵自動增量,
+ ISBN文本不為空,標題文本不為空,
+出版商文字NOT NULL);;
私人最終上下文語境;
私人DatabaseHelper DBHelper;
私人SQLiteDatabase分貝;
公共DBAdapter(上下文CTX){
this.context = CTX;
DBHelper =新DatabaseHelper(上下文);
}
私有靜態類DatabaseHelper擴展SQLiteOpenHelper
{
DatabaseHelper(上下文環境){
超(背景下,DATABASE_NAME,空,DATABASE_VERSION);
}
覆蓋
公共無效的onCreate(SQLiteDatabase DB){
db.execSQL(DATABASE_CREATE);
}
覆蓋
公共無效onUpgrade(SQLiteDatabase分貝,INT oldVersion,
INT NEWVERSION){
Log.w(TAG,從版本升級資料庫?+ oldVersion
?+到
+ NEWVERSION +,這將銷毀所有舊的數據);
db.execSQL(「DROP TABLE IF EXISTS標題」);
的onCreate(DB);
}}
}
的onCreate()方法創建一個新的資料庫,onUpgrade()方法用於升級資料庫,它可以通過檢查DATABASE_VERSION常數值來定義?實現,為onUpgrade()方法,只是簡單地刪除表,然後只創建一個表。
❽ android 如何導入外部資料庫到應用中
你自己不也都說了
拷貝到資料庫目錄下操作了嗎。。而且你添加表
對資料庫更新,什麼的,當然是直接對資料庫目錄下的db文件操作方便了。更新完後再把data目錄下的資料庫放到assets文件覆蓋原來的。而不是啟動應用程序然後更新資料庫,這樣利用靜態資料庫打包綁定APP更效率。資料庫直接跟隨APP發布了
查看原帖>>
❾ android 除了sqlite還能使用什麼資料庫
android除了sqlite資料庫,還是可以使用mysql資料庫,使用步驟如下:
1. 關閉mysql伺服器的防火牆。
2. 加入MySQL的jdbc包,添加到libs文件夾內。
3.ADT和SDK為16及16以下,17以上的不能訪問。
4.手機和mysq伺服器l互相ping通。
5.添加網路許可權 : <uses-permission Android:name="android.permission.INTERNET" />
6.在Thread中連接訪問mysql,防止ANR。
7.設置mysql允許遠程連接。
代碼如下:
package com.mayi.mysql_test;
import java.sql.DriverManager;
import java.sql.ResultSet;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.select).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
select();
}
});
}
public void select(){
try{
//調用Class.forName()方法載入驅動程序
Class.forName("org.gjt.mm.mysql.Driver");
System.out.println("成功載入MySQL驅動!");
String url="jdbc:mysql://192.168.1.113:3306/test"; //JDBC的URL
Connection conn;
conn = (Connection) DriverManager.getConnection(url,"mayi","123456");
Statement stmt = (Statement) conn.createStatement(); //創建Statement對象
System.out.println("成功連接到資料庫!");
String sql = "select * from person"; //要執行的SQL
ResultSet rs = stmt.executeQuery(sql);//創建數據對象
System.out.println("編號"+"\t"+"姓名"+"\t"+"年齡");
while (rs.next()){
System.out.print(rs.getInt(1) + "\t");
System.out.print(rs.getString(2) + "\t");
System.out.print(rs.getString(3) + "\t");
System.out.print(rs.getString(4) + "\t");
System.out.println();
}
rs.close();
stmt.close();
conn.close();
}catch(Exception e)
{
Log.e(TAG, e.getMessage());
e.printStackTrace();
}
}
}
❿ Android如何導入已有的外部資料庫(在raw下自己導入db文件)
操作方法是用FileInputStream讀取原資料庫,再用 FileOutputStream把讀取到的東西寫入到那個目錄。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 packagecom.android.ImportDatabase; importjava.io.File; importjava.io.FileNotFoundException; importjava.io.FileOutputStream; importjava.io.IOException; importjava.io.InputStream; importandroid.content.Context; importandroid.database.sqlite.SQLiteDatabase; importandroid.os.Environment; importandroid.util.Log; publicclassDBManager { privatefinalintBUFFER_SIZE =400000; publicstaticfinalString DB_NAME ="countries.db";//保存的資料庫文件名 publicstaticfinalString PACKAGE_NAME ="com.android.ImportDatabase"; publicstaticfinalString DB_PATH ="/data" + Environment.getDataDirectory().getAbsolutePath() +"/" + PACKAGE_NAME; //在手機里存放資料庫的位置 privateSQLiteDatabase database; privateContext context; DBManager(Context context) { this.context = context; } publicvoidopenDatabase() { this.database =this.openDatabase(DB_PATH +"/"+ DB_NAME); } privateSQLiteDatabase openDatabase(String dbfile) { try{ if(!(newFile(dbfile).exists())) { //判斷資料庫文件是否存在,若不存在則執行導入,否則直接打開資料庫 InputStream is =this.context.getResources().openRawResource( R.raw.countries);//欲導入的資料庫 FileOutputStream fos =newFileOutputStream(dbfile); byte[] buffer =newbyte[BUFFER_SIZE]; intcount =0; while((count = is.read(buffer)) >0) { fos.write(buffer,0, count); } fos.close(); is.close(); } SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null); returndb; }catch(FileNotFoundException e) { Log.e("Database","File not found"); e.printStackTrace(); }catch(IOException e) { Log.e("Database","IO exception"); e.printStackTrace(); } returnnull; } ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 packagecom.android.ImportDatabase; importjava.util.ArrayList; importandroid.app.Activity; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; importandroid.os.Bundle; { privateSQLiteDatabase database; ArrayList<CityClass> CITY; @Override publicvoidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); database = SQLiteDatabase.openOrCreateDatabase(DBManager.DB_PATH +"/"+ DBManager.DB_NAME,null); CITY = getCity(); // do something with CITY database.close(); } privateArrayList<CityClass> getCity() { Cursor cur = database.rawQuery("SELECT city.id_city, city.name FROM taxi, city WHERE city.id_city = taxi.id_city GROUP BY city.id_city",null); if(cur !=null) { intNUM_CITY = cur.getCount(); ArrayList<CityClass> taxicity =newArrayList<CityClass>(NUM_CITY); if(cur.moveToFirst()) { do{ String name = cur.getString(cur.getColumnIndex("name")); intid = cur.getInt(cur.getColumnIndex("id_city")); CityClass city =newCityClass("",0); System.out.println(name); //額外添加一句,把select到的信息輸出到Logcat city.city_name = name; city.city_id = id; taxicity.add(city); }while(cur.moveToNext()); } returntaxicity; }else{ returnnull; } } } 查看輸出的結果: