十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這種方式通常連接一個(gè)外部的數(shù)據(jù)庫,第一個(gè)參數(shù)就是數(shù)據(jù)庫文件,這個(gè)數(shù)據(jù)庫不是當(dāng)前項(xiàng)目中生成的,通常放在項(xiàng)目的Assets目錄下,當(dāng)然也可以在手機(jī)內(nèi),如上面參數(shù)那個(gè)目錄,前提是那個(gè)文件存在且你的程序有訪問權(quán)限。

蘭坪ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
另一種使用數(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)建時(shí)調(diào)用,里面執(zhí)行表創(chuàng)建語句.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createVoucherTable());
}
//數(shù)據(jù)庫升級時(shí)調(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并實(shí)現(xiàn)里面的方法.
之后:
//得到數(shù)據(jù)庫助手類
helper
=
new
DatabaseHelper(context);
//通過助手類,打開一個(gè)可讀寫的數(shù)據(jù)庫連接
SQLiteDatabase
database
=
helper.getReadableDatabase();
//查詢表中所有記錄
database.query(DatabaseConstant.TABLE_NAME,
null,
null,
null,
null,
null,
null);
select * from systypes where xtype=xusertype and xtype in (select xtype from syscolumns where id =(select id from sysobjects where name='你的數(shù)據(jù)庫表名字' and xtype='U'))
android數(shù)據(jù)庫,只在第一次調(diào)用getWritableDatabase();或者getReadableDatabase();時(shí)候才會創(chuàng)建數(shù)據(jù)庫,
@Override
public
void
onCreate(SQLiteDatabase
db)
{}
方法,如果創(chuàng)建報(bào)錯(cuò)的話,請檢查sql語句是否正解,或者用sqltie編輯器在電腦上執(zhí)行看看是否語法問題
1,進(jìn)入到控制臺中,輸入adb shell,進(jìn)入到命令模式的環(huán)境中
2,輸入:cd /data/data/
3, 選擇你所在的數(shù)據(jù)庫文件,比如我的com.android.homework, 輸入命令:cd com.android.homework
4, 可以使用ls -l 命令查看當(dāng)前目錄中的文件
5,輸入: cd databases 進(jìn)入到數(shù)據(jù)庫文件中
6, ls -l 顯示你數(shù)據(jù)庫中你建立的數(shù)據(jù)庫
7, sqlite3 info.db 進(jìn)入到你選擇的數(shù)據(jù)庫中
8, .tables :查看你建的表
9, select * from table_name;s 可以查看整個(gè)表的信息
10, 使用其他的SQL語句可以進(jìn)一步對表進(jìn)行操作,注意SQL語句必須用分號(;)結(jié)尾
如下圖所示:
android 中的數(shù)據(jù)庫操作 android 中的應(yīng)用開發(fā)很難避免不去使用數(shù)據(jù)庫, 聊聊 android 中的數(shù)據(jù) 庫操作,我發(fā)給你 word 貼不下
一、android 內(nèi)的數(shù)據(jù)庫的基礎(chǔ)知識介紹
1.用了什么數(shù)據(jù)庫
android 中采用的數(shù)據(jù)庫是 SQLite 這個(gè)輕量級的嵌入式開源數(shù)據(jù)庫,它是用 c 語言構(gòu)建的。相關(guān)簡介可以從鏈接查看。
2.數(shù)據(jù)庫基本知識觀花
對于一些和我一樣還沒有真正系統(tǒng)學(xué)習(xí)數(shù)據(jù)庫技術(shù)的同學(xué)來說,把 SQL92 標(biāo) 準(zhǔn)中的一些基本概念、基本語句快速的了解一下,是很有必要的,這樣待會用 Android 的 database 相關(guān)方法去執(zhí)行一些數(shù)據(jù)庫語句時(shí)就不會茫然了。
①數(shù)據(jù)庫的基本結(jié)構(gòu)——表格
表格是數(shù)據(jù)庫中儲存資料的基本架構(gòu)。表格被分為欄位 (column) 及列位 (row)。每 一列代表一筆資料,而每一欄代表一筆資料的一部份。舉例來說,如果我們有一個(gè)記載顧客 資料的表格,那欄位就有可能包括姓、名、地址、城市、國家、生日..等等。每一個(gè)表格 . 擁有一個(gè)獨(dú)一無二的名字(Table Name)以便能夠讓用戶定位到它上面。一個(gè)典型的表格結(jié) 構(gòu)如下:
Store_Information 表格
store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-1999 Los Angeles $300 Jan-08-1999 Boston $700 Jan-08-1999 該表格的表格名字為 Store_Information, 一共有三個(gè)欄位, 分別為 store_name , Sales , Data , 已經(jīng)錄入了四筆數(shù)據(jù)所以有四個(gè)列位。
②關(guān)于數(shù)據(jù)類型
和其他的數(shù)據(jù)庫不同的是,sqlite 是無類型的。也就是當(dāng)你創(chuàng)建一個(gè)表格時(shí),無需對 每一個(gè)欄位要存儲的數(shù)據(jù)的類型進(jìn)行聲明,當(dāng)你在給表格增加數(shù)據(jù)條目時(shí),sqlite 會自動找 到存入的數(shù)據(jù)的類型。
SQLite 允許忽略數(shù)據(jù)類型,但是,仍然建議在 Create Table 語句中指定數(shù)據(jù)類型, 因?yàn)閿?shù)據(jù)類型有利于增強(qiáng)程序的可讀性。SQLite 支持常見的數(shù)據(jù)類型,如 VARCHAR、 NVARCHAR、TEXT、INTEGER、FLOAT、BOOLEAN、CLOB、BLOB、TIMESTAMP、 NUMERIC、VARYING、CHARACTER、NATl0NAI, VARYINGCHARACTER。這些數(shù)據(jù)類 型都是 SQL92 標(biāo)準(zhǔn)中規(guī)定的標(biāo)準(zhǔn)數(shù)據(jù)庫數(shù)據(jù)類型,想要有更近一步了解,請參看下表。
SQL 數(shù)據(jù)庫數(shù)據(jù)類型詳解 數(shù)據(jù)類型 類型 描 述 bit 整型 bit 數(shù)據(jù)類型是整型,其值只能是 0、1 或空值。這種數(shù)據(jù)類型用于存儲只有兩 種可能值的數(shù)據(jù),如 Yes 或 No、True 或 Fa lse 、On 或 Off int 整型 int 數(shù)據(jù)類型可以存儲從- 231(-2147483648)到 231 (2147483 647)之間的整數(shù)。存 儲到數(shù)據(jù)庫的幾乎所有數(shù)值型的數(shù)據(jù)都可以用這種數(shù)據(jù)類型。 這種數(shù)據(jù)類型在數(shù)據(jù)庫里占用 4 個(gè)字節(jié) smallint 整型 smallint 數(shù)據(jù)類型可以存儲從- 215(-32768)到 215(32767)之間的整數(shù)。這種 數(shù)據(jù)類型對存儲一些常限定在特定范圍內(nèi)的數(shù)值型數(shù)據(jù)非常有用。 這種數(shù)據(jù)類型在數(shù)據(jù)庫里 占用 2 字節(jié)空間 tinyint 整型 tinyint 數(shù)據(jù)類型能存儲從 0 到 255 之間的整數(shù)。 它在你只打算存儲有限數(shù)目 的數(shù)值時(shí)很有用。 這種數(shù)據(jù)類型在數(shù)據(jù)庫中占用 1 個(gè)字節(jié) numeric 精確數(shù)值型 numeric 數(shù)據(jù)類型與 decimal 型相同 decimal 精確數(shù)值型 decimal 數(shù)據(jù)類型能用來存儲從-1038-1 到 1038-1 的固定精度和范圍 的數(shù)值型數(shù)據(jù)。使用這種數(shù)據(jù)類型時(shí),必須指定范圍和精度。 范圍是小數(shù)點(diǎn)左右所能存儲
SQLite 創(chuàng)建表
下面是教程來自于android學(xué)習(xí)手冊,android學(xué)習(xí)手冊包含9個(gè)章節(jié),108個(gè)例子,源碼文檔隨便看,例子都是可交互,可運(yùn)行,源碼采用android studio目錄結(jié)構(gòu),高亮顯示代碼,文檔都采用文檔結(jié)構(gòu)圖顯示,可以快速定位。360手機(jī)助手中下載,圖標(biāo)上有貝殼
SQLite 的 CREATE TABLE 語句用于在任何給定的數(shù)據(jù)庫創(chuàng)建一個(gè)新表。創(chuàng)建基本表,涉及到命名表、定義列及每一列的數(shù)據(jù)類型。
語法
CREATE TABLE 語句的基本語法如下:
CREATE TABLE database_name.table_name(
column1 datatype PRIMARY KEY(one or more columns),
column2 datatype,
column3 datatype,
.....
columnN datatype,
);
CREATE TABLE 是告訴數(shù)據(jù)庫系統(tǒng)創(chuàng)建一個(gè)新表的關(guān)鍵字。CREATE TABLE 語句后跟著表的唯一的名稱或標(biāo)識。您也可以選擇指定帶有table_name 的 database_name。
實(shí)例
下面是一個(gè)實(shí)例,它創(chuàng)建了一個(gè) COMPANY 表,ID 作為主鍵,NOT NULL 的約束表示在表中創(chuàng)建紀(jì)錄時(shí)這些字段不能為 NULL:
sqlite CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
讓我們再創(chuàng)建一個(gè)表,我們將在隨后章節(jié)的練習(xí)中使用:
sqlite CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT NOT NULL
);
您可以使用 SQLIte 命令中的 .tables 命令來驗(yàn)證表是否已成功創(chuàng)建,該命令用于列出附加數(shù)據(jù)庫中的所有表。
sqlite.tables
COMPANY DEPARTMENT
在這里,可以看到我們剛創(chuàng)建的兩張表 COMPANY、 DEPARTMENT。
您可以使用 SQLite .schema 命令得到表的完整信息,如下所示:
sqlite.schema COMPANY
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);