SQLite數據庫
標簽: SQLite數據庫
Android下的Sqlite數據庫
SQLite,是一款輕型的數據庫,它包含在一個相對小的C庫中。它的設計目標是嵌入式的,而 且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需 要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很 多程序語言相結合,SQLite第一個Alpha版本誕生于2000年5月。 至2016年已經有16個年頭, SQLite也迎來了一個版本 SQLite 3已經發布。
如何創建數據庫
創建數據庫幫助類(構造器)
//數據庫表?文件
public static final String DB_NAME="contact.db"; //數據庫版本
public static final int DB_VERSION=1;
public DbOpenHelper(Context context) {
//context 一言難盡//name 數據庫名//factory表示游標//version版本
super(context, DB_NAME, null, DB_VERSION);
}
創建一般文件
File file=new File(getFilesDir(),"mock.txt");
file.createNewFile();
創建數據庫文件
MyOpenHelper helper=new MyOpenHelper(this);
helper.getReadableDatabase();
創建數據庫表
@Override
//數據庫?文件創建的時候調?用該?方法
public void onCreate(SQLiteDatabase db) {
System.out.println("onCreate");
//創建數據庫表
db.execSQL("create table contactinfo(_id integer primary key autoincrement," +"username varchar(20),phone varchar(15));");
}
數據庫更新
//數據庫更新 只要跟之前的數據庫版本不?一樣 則會調?用 該?方法可以修改數據庫表的各種數 據
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// oldVersion表示舊版本 newVersion 新版本
Log.v("liwangjiang", "onUpgrade"+" oldVersion=" +oldVersion+" newVersion="+newVersion);
}
保存數據庫文件:/data/data/包名/databases/xxx.db
數據庫增刪改查的SQL語句
增加(插入聯系人 手機號到數據庫):
update contactinfo set phone='150111111111' where username='zhangsan';
delete from contactinfo where username='lisi';
查詢(查詢電話為15022222222的用戶):
select username,phone from contactinfo where phone='15022222222';
數據庫增刪改查代碼實現
開發步驟:
1.首先在Sqlite expert工具中確保SQL語句正常運行.
2.創建Dao層 封裝你需要的Dao業務(CURD)
3.創建界面去調用
public class ContactDao {
private DbOpenHelper dbOpenHelper;
public ContactDao(Context context){
dbOpenHelper = new DbOpenHelper(context);
}
public boolean insertContact(String username,String phone){
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//插入數據第一個tabel表示表名
//第二個是表示nullColumnHack表示是否為空
//values表示鍵值對
ContentValues values = new ContentValues();
values.put(DbOpenHelper.USERNAME, username);
values.put(DbOpenHelper.PHONE, phone);
//返回-1表示錯誤
long i = db.insert(DbOpenHelper.TABLE_NAME, null, values);
return i!=-1;
}
public boolean updataContact(String username,String newPhone){
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//table表示表名
//values 表示更新的鍵值對
//whereClause where語句
//whereArgs where語句綁定的值
ContentValues values = new ContentValues();
values.put(DbOpenHelper.PHONE, newPhone);
int i = db.update(DbOpenHelper.TABLE_NAME, values,
DbOpenHelper.USERNAME+"=?", new String[]{username});
return i>0;
}
public boolean deleteContact(String username){
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//table 表示表名
//whereClause表示where語句
//whereArgs表示綁定的值
int i = db.delete(DbOpenHelper.TABLE_NAME, ""+DbOpenHelper.USERNAME+"=?",new String[]{username});
return i>0;
}
public String selectContact(String phone){
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
//table 表示表名
//columns 返回多少列 比如 new String[]{'列名','列名2'} 行數
//selection where語句
//selectionArgs表示綁定的值
Cursor cursor = db.query(DbOpenHelper.TABLE_NAME,new String[]{DbOpenHelper.USERNAME,DbOpenHelper.PHONE} ,
""+dbOpenHelper.PHONE+"=?", new String[]{phone}, null, null, null);
String result="";
while(cursor.moveToNext()){
//根據列名返回索引
int usernameIndex=cursor.getColumnIndex(DbOpenHelper.USERNAME);
String username = cursor.getString(usernameIndex);
int phoneIndex = cursor.getColumnIndex(DbOpenHelper.PHONE);
String phones = cursor.getString(phoneIndex);
result+=("名字 : "+username+" 電話 : "+phones+" \n");
}
return result;
}
}
//直接復制即可
--用于讀數據比如你要查看一條數據就是讀在數據表中讀取數據進來 寫數據就要使用getReadableDatabase();方法返回一個SQLiteDatabase對象
以上方法他執行玩沒有返回值下面圖片注釋可以了解
Sqlite3工具的使用
Sqlite3工具的位置:
..\android-adt-bundle\sdk\tools\sqlite3.exe
如何進入sqlite3命令行:
1. 先執行adb -s 模擬器名稱 shell
2. linux shell命令: cd /data/data/包名/databases 到databases目錄下 pwd 查看當前的 目錄位置
Sqlite3工具常用操作:
sqlite3 數據庫文件名(進入了數據庫)
查看該文件下的所有數據庫表 .tables
查看某個數據庫表結構 select * from 表名;
退出sqlite3 .quit
數據庫增刪改查的Google實現

File file=new File("xxxx");
1.flie.createNewFile();
2.創建一個輸出流
如何創建一個數據庫文件
繼承SqliteOpenHelper類 在構造器里面設置數據庫文件的名稱 數據庫的版本
SqliteOpenHelper helper=new SqliteOpenHelper();
helper.getWriteableDatabase()/getReadableDatabase()
一個數據庫文件可以有多張數據庫表
SqliteOpenHelper提供了兩個方法:onCreate() onUpgrad()
onCreate()什么時候被調用 數據庫文件被創建的時候調用
可以在該方法里面執行創建多張數據庫表的操作
onUpgrad()什么時候調用 判斷新安裝的應用的版本號跟手機原有應用的版本號是否不同
修改數據庫表 db,oladVersion,newVersion
如何執行CURD
1.通過sql語句 SqliteDatabase.executeSQL(sql,bindArgs[]);
2.通過google的API SqliteDatabase.delete()
3.查詢
通過sql: Cursor=SqliteDatabase.rawQuery()
通過google的API Cursor=SqliteDatabase.query()
Cursor:數據集
1.返回多條數據 while(cursor.moveToNext()){ }
2.返回的多條數據中 移動到某一行 if(cursor.moveToPosition(int pos)){ }
3.只返回一條數據 if(cursor.moveToFirst()){ }
4.讀取數據:
列的索引=cursor.getColumnIndex(列名)
cursor.get數據類型(列的索引)
對外提供服務 (使用單元測試)
/data/data/package name/databases/xxxx.db
//事務數據庫 都是安卓系統在維護
/data/data/package name/databases/xxxx-后綴.db
智能推薦
數據庫SQLite<一>
一、SQLite數據庫簡介 SQLite第一個Alpha版本誕生于2000年5月,它是一款輕量級數據庫,它的設計目標是嵌入式的,占用資源非常的低,只需要幾百K的內存就夠了。SQLite已經被多種軟件和產品使用,Mozilla FireFox就是使用SQLite來存儲配置數據的,Android和iPhone都是使用SQLite來存儲數據的。 二、Android中如何使用SQLite 1. 使用SQL...
《Python》《SQLite》Python連接SQLite數據庫,讀表
配置Python環境的方法在我的博客中已經詳細介紹。 一、SQLite和PySQLite 在最近的Python版本中(從2.5開始),SQLite的優勢在于它的一個包裝(PySQLite)已經被包括在標準庫內。SQLite在Python中的模塊名稱為“sqlite3”,我們可以在...
《SQLite》最輕巧的數據庫SQLite——初探
文章目錄 一、SQLite概念及優點 二、SQLite圖形化管理工具——SQLite Expert Professional 三、SQLite基礎語言 1、創建數據庫 2、刪除數據庫 3、創建表 4、刪除表 5、表操作語句 一、SQLite概念及優點 概念: SQLite是一款嵌入式數據庫,和Oracle、Mysql、DB2等數據庫不同,比如Oracle它是與程序分離的,而...
Android數據庫 之 SQLite數據庫
2019獨角獸企業重金招聘Python工程師標準>>> 每個應用程序都要使用數據,Android應用程序也不例外,Android使用開源的、與操作系統無關的SQL數據庫—SQLite。 SQLite第一個Alpha版本誕生于2000年5月,它是一款輕量級數據庫,它的設計目標是嵌入式的,占用資源非常的低,只需要幾百K的內存就夠了。 SQLite已經被多種軟件和產品使用,...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...