1. 在android中對資料庫做增刪改查有兩種方式分別是sqlitedatabase這個類中的哪幾個
一、使用嵌入式關系型SQLite資料庫存儲數據
在Android平台上,集成了一個嵌入式關系型資料庫——SQLite,SQLite3支持NULL、INTEGER、REAL(浮點數字)、 TEXT(字元串文本)和BLOB(二進制對象)數據類型,雖然它支持的類型只有五種,但實際上sqlite3也接受varchar(n)、 char(n)、decimal(p,s) 等數據類型,只不過在運算或保存時會轉成對應的五種數據類型。 SQLite最大的特點是你可以把各種類型的數據保存到任何欄位中,而不用關心欄位聲明的數據類型是什麼。例如:可以在Integer類型的欄位中存放字元串,或者在布爾型欄位中存放浮點數,或者在字元型欄位中存放日期型值。 但有一種情況例外:定義為INTEGER PRIMARY KEY的欄位只能存儲64位整數, 當向這種欄位保存除整數以外的數據時,將會產生錯誤。 另外,在編寫CREATE TABLE 語句時,你可以省略跟在欄位名稱後面的數據類型信息,如下面語句你可以省略name欄位的類型信息:
CREATE TABLE person (personid integer primary key autoincrement, name varchar(20))
SQLite可以解析大部分標准SQL語句,如:
復制代碼 代碼如下:
查詢語句:select * from 表名 where 條件子句 group by 分組字句 having ... order by 排序子句
如: select * from person
select * from person order by id desc
select name from person group by name having count(*)>1
分頁SQL與mysql類似,下面SQL語句獲取5條記錄,跳過前面3條記錄
select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
插入語句:insert into 表名(欄位列表) values(值列表)。如: insert into person(name, age) values(『傳智',3)
更新語句:update 表名 set 欄位名=值 where 條件子句。如:update person set name=『傳智『 where id=10
刪除語句:delete from 表名 where 條件子句。如:delete from person where id=10
二、使用SQLiteOpenHelper對資料庫進行版本管理
我們在編寫資料庫應用軟體時,需要考慮這樣的問題:因為我們開發的軟體可能會安裝在很多用戶的手機上,如果應用使用到了SQLite資料庫,我們必須在用戶初次使用軟體時創建出應用使用到的資料庫表結構及添加一些初始化記錄,另外在軟體升級的時候,也需要對數據表結構進行更新。那麼,我們如何才能實現在用戶初次使用或升級軟體時自動在用戶的手機上創建出應用需要的資料庫表呢?總不能讓我們在每個需要安裝此軟體的手機上通過手工方式創建資料庫表吧?因為這種需求是每個資料庫應用都要面臨的,所以在Android系統,為我們提供了一個名為SQLiteOpenHelper的抽象類,必須繼承它才能使用,它是通過對資料庫版本進行管理來實現前面提出的需求。
為了實現對資料庫版本進行管理,SQLiteOpenHelper類提供了兩個重要的方法,分別是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),前者用於初次使用軟體時生成資料庫表,後者用於升級軟體時更新資料庫表結構。當調用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用於操作資料庫的SQLiteDatabase實例的時候,如果資料庫不存在,Android系統會自動生成一個資料庫,接著調用onCreate()方法,onCreate()方法在初次生成資料庫時才會被調用,在onCreate()方法里可以生成資料庫表結構及添加一些應用使用到的初始化數據。onUpgrade()方法在資料庫的版本發生變化時會被調用,一般在軟體升級時才需改變版本號,而資料庫的版本是由程序員控制的,假設資料庫現在的版本是1,由於業務的變更,修改了資料庫表結構,這時候就需要升級軟體,升級軟體時希望更新用戶手機里的資料庫表結構,為了實現這一目的,可以把原來的資料庫版本設置為2(有同學問設置為3行不行?當然可以,如果你願意,設置為100也行),並且在 onUpgrade()方法裡面實現表結構的更新。當軟體的版本升級次數比較多,這時在onUpgrade()方法裡面可以根據原版號和目標版本號進行判斷,然後作出相應的表結構及數據更新。
getWritableDatabase()和 getReadableDatabase()方法都可以獲取一個用於操作資料庫的SQLiteDatabase實例。但 getWritableDatabase() 方法以讀寫方式打開資料庫,一旦資料庫的磁碟空間滿了,資料庫就只能讀而不能寫,倘若使用getWritableDatabase()打開資料庫就會出錯。getReadableDatabase()方法先以讀寫方式打開資料庫,如果資料庫的磁碟空間滿了,就會打開失敗,當打開失敗後會繼續嘗試以只讀方式打開資料庫。
注意:getWritableDatabase(),getReadableDatabase的區別是當資料庫寫滿時,調用前者會報錯,調用後者不會,所以如果不是更新資料庫的話,最好調用後者來獲得資料庫連接。
代碼:
復制代碼 代碼如下:
public class DatabaseHelper extends SQLiteOpenHelper {
//類沒有實例化,是不能用作父類構造器的參數,必須聲明為靜態
private static final String name = "ljqdb"; //資料庫名稱
private static final int version = 1; //資料庫版本
public DatabaseHelper(Context context) {
//第三個參數CursorFactory指定在執行查詢時獲得一個游標實例的工廠類,設置為null,代表使用系統默認的工廠類
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS person (
personid integer primary key autoincrement, name varchar(20), age INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(" ALTER TABLE person ADD phone VARCHAR(12) NULL "); //往表中增加一列
// DROP TABLE IF EXISTS person 刪除表
}
}
在實際項目開發中,當資料庫表結構發生更新時,應該避免用戶存放於資料庫中的數據丟失。
三、使用SQLiteDatabase操作SQLite資料庫
Android提供了一個名為SQLiteDatabase的類,該類封裝了一些操作資料庫的API,使用該類可以完成對數據進行添加(Create)、查詢(Retrieve)、更新(Update)和刪除(Delete)操作(這些操作簡稱為CRUD)。對SQLiteDatabase的學習,我們應該重點掌握execSQL()和rawQuery()方法。execSQL()方法可以執行insert、delete、update和CREATE TABLE之類有更改行為的SQL語句; rawQuery()方法用於執行select語句。
execSQL()方法的使用例子:
復制代碼 代碼如下:
SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values('林計欽', 24)");
db.close();
執行上面SQL語句會往person表中添加進一條記錄,在實際應用中, 語句中的「林計欽」這些參數值會由用戶輸入界面提供,如果把用戶輸入的內容原樣組拼到上面的insert語句, 當用戶輸入的內容含有單引號時,組拼出來的SQL語句就會存在語法錯誤。要解決這個問題需要對單引號進行轉義,也就是把單引號轉換成兩個單引號。有些時候用戶往往還會輸入像「 & 」這些特殊SQL符號,為保證組拼好的SQL語句語法正確,必須對SQL語句中的這些特殊SQL符號都進行轉義,顯然,對每條SQL語句都做這樣的處理工作是比較煩瑣的。 SQLiteDatabase類提供了一個重載後的execSQL(String sql, Object[] bindArgs)方法,使用這個方法可以解決前面提到的問題,因為這個方法支持使用佔位符參數(?)。使用例子如下:
復制代碼 代碼如下:
SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"傳智播客", 4});
db.close();
execSQL(String sql, Object[] bindArgs)方法的第一個參數為SQL語句,第二個參數為SQL語句中佔位符參數的值,參數值在數組中的順序要和佔位符的位置對應。
SQLiteDatabase的rawQuery()用於執行select語句,使用例子如下:
復制代碼 代碼如下:
SQLiteDatabase db = ....;
Cursor cursor = db.rawQuery("select * from person", null);
while (cursor.moveToNext()) {
int personid = cursor.getInt(0); //獲取第一列的值,第一列的索引從0開始
String name = cursor.getString(1);//獲取第二列的值
int age = cursor.getInt(2);//獲取第三列的值
}
cursor.close();
db.close();
rawQuery()方法的第一個參數為select語句;第二個參數為select語句中佔位符參數的值,如果select語句沒有使用佔位符,該參數可以設置為null。帶佔位符參數的select語句使用例子如下:
復制代碼 代碼如下:
Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"%林計欽%", "4"});
Cursor是結果集游標,用於對結果集進行隨機訪問,如果大家熟悉jdbc, 其實Cursor與JDBC中的ResultSet作用很相似。使用moveToNext()方法可以將游標從當前行移動到下一行,如果已經移過了結果集的最後一行,返回結果為false,否則為true。另外Cursor 還有常用的moveToPrevious()方法(用於將游標從當前行移動到上一行,如果已經移過了結果集的第一行,返回值為false,否則為true )、moveToFirst()方法(用於將游標移動到結果集的第一行,如果結果集為空,返回值為false,否則為true )和moveToLast()方法(用於將游標移動到結果集的最後一行,如果結果集為空,返回值為false,否則為true ) 。
除了前面給大家介紹的execSQL()和rawQuery()方法, SQLiteDatabase還專門提供了對應於添加、刪除、更新、查詢的操作方法: insert()、delete()、update()和query() 。這些方法實際上是給那些不太了解SQL語法的菜鳥使用的,對於熟悉SQL語法的程序員而言,直接使用execSQL()和rawQuery()方法執行SQL語句就能完成數據的添加、刪除、更新、查詢操作。
2. 安卓用eclipse資料庫的連接,增刪改查問題
Android 連接資料庫
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[] {DB.TEXT1,DB. TEXT2},
new int[]{ R.id.list1,R.id.listText2 });
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[]{_id});
}
/**
* 更新記錄的,跟插入的很像
*/
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[]{_id});
}
/**
* 查詢所有數據
* @return Cursor
*/
public Cursor select(){
SQLiteDatabase db = getReadableDatabase();
return db.query(
tbname,
new String[]{"_id","tname","tage","ttel","taddr"},
null,
null, null, null, "_id desc");
}
3. 資料庫中增刪改查的基本語句是什麼
常見如下:
進入mysql命令行: mysql -uroot -p;查看所有資料庫: show databases;增加創建資料庫: create database niu charset utf8;刪除資料庫: drop database niu;選擇資料庫: use databases。
查看所有表: show tables;查看創建資料庫的語句:show create database databasename;查看創建表的語句:show create table tablename;查看錶結構:desc tablenmae。
相關簡介
mysql_stmt_fetch是函數名,mysql_stmt_fetch()返回結果集中的下一行。
僅能當結果集存在時調用它,也就是說,調用了能創建結果集的mysql_stmt_execute()之後,或當mysql_stmt_execute()對整個結果集即行緩沖處理後調用了mysql_stmt_store_result()。
使用mysql_stmt_bind_result()綁定的緩沖,mysql_stmt_fetch()返回行數據。對於當前列集合中的所有列,它將返回緩沖內的數據,並將長度返回到長度指針。
4. android開發中的SQLite資料庫的增刪改查功能怎麼實現
SQLite是一個輕量級的嵌入式資料庫引擎,它支持SQL語言,並且佔用很少的內存就可以有很好的性能。它與其他資料庫的最大的不同就是對數據類型的支持,創建一個表時,可以在CREATE
TABLE語句中指定某列的數據類型,但是可以把任何數據類型放入任何列中。當某個值插入資料庫時,SQLite將檢查它的數據類型。如果該類型和關聯的列不匹配,那麼SQLite會嘗試將該值轉換成該列的數據類型,如果不能轉換,那麼該值將作為其本身具有的數據類型存儲。對於Android平台來說,系統內置了豐富的API(SQLiteDatabase、SQLiteOpenHelper,Cursor等)來供我們操作SQLite。那麼接下來我將會結合我的代碼來講述我對Android資料庫的理解。
5. 如何對android多媒體資料庫進行增刪改
Android四種存儲方式: sharedpreference,file,SQlite,contentprovider。
1、SharedPreferences是一種輕型的數據存儲方式,它的本質是基於XML文件存儲key-value鍵值對數據,通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/<包名>/shared_prefs目錄下。SharedPreferences對象本身只能獲取數據而不支持存儲和修改,存儲修改是通過Editor對象實現。實現SharedPreferences存儲的步驟如下:
一、根據Context獲取SharedPreferences對象
二、利用edit()方法獲取Editor對象。
三、通過Editor對象存儲key-value鍵值對數據。
四、通過commit()方法提交數據。
具體實現代碼如下:實現存儲,讀取,清除,刪除
效果圖:
首先創建:// 首先拿到sharedpreference對象
mShared =getSharedPreferences(SHARED_MAIN_XML, MODE_PRIVATE);
存儲:
private void write() {// 存入數據
savename = name.getText().toString().trim();
saveage = Integer.valueOf(age.getText().toString().trim());
Editor editor = mShared.edit();
editor.putString("name", savename);
editor.putInt("age", saveage);
// 保證操作的事務完整性
editor.commit();
}
閱讀:
private String read() {// 從資料庫里讀取數據
namecontent = mShared.getString("name", "資料庫里沒有存儲姓名");
agecontent = mShared.getInt("age", 0);
String reading = "姓名:" + namecontent + "\n年齡:" + agecontent;
return reading;
}
清除內容:
private void clear() {//清除內容
/** 開始清除SharedPreferences中保存的內容 **/
Editor editor = mShared.edit();
editor.remove("name");
editor.remove("age");
editor.commit();
}
刪除文件:
private void delete() {//刪除文件
/** 刪除SharedPreferences文件 **/
Filefile = new File("/data/data/cn.csdn.activity" + "/shared_prefs/"
+ SHARED_MAIN_XML + ".xml");
if (file.exists()) {
file.delete();
Toast.makeText(this, "刪除成功", Toast.LENGTH_LONG).show();
}
}
haredPreferences對象與SQLite資料庫相比,免去了創建資料庫,創建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數據類型,比如其無法進行條件查詢等。所以不論SharedPreferences的數據存儲操作是如何簡單,它也只能是存儲方式的一種補充,而無法完全替代如SQLite資料庫這樣的其他數據存儲方式。
2、File: 即常說的文件(I/O)存儲方法,常用存儲大數量的數據,但是缺點是更新數據將是一件困難的事情。
下面實現:在本地data文件下使用自己生成的文件處理數據的新建儲存 讀取 刪除
如果說不想把內容存在SharedPreferences中的話,我們可以自己寫一個文件保存須要的數據,在這里我將文件保存在系統中的工程路徑下。
跟上面布局一樣,刪除文件也一樣,清除內容也查不多,下面只是簡單的寫和讀的方法:
寫:
17String
nameage="名字:"+name.getText().toString().trim()+"年齡:"+age.getText().toString();
try {
os = this.openFileOutput(SHARED_MAIN_XML, MODE_PRIVATE);
/* 把字元串轉換成位元組數組,寫入文件中 */
os.write(nameage.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
/* 關閉文件輸出流 */
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
讀:
private String read() {
String nameage="";
// 打開文件輸入流,
try {
is = this.openFileInput(SHARED_MAIN_XML);
/* 初始化位元組數組 */
b = new byte[1024];
/* 從文件輸入流中讀取內容到位元組數組中,返回內容長度 */
int length = is.read(b);
/* 把位元組數組轉換成字元串 */
nameage= new String(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return nameage;
}
很簡單吧!!
3、SQLite是一種轉為嵌入式設備設計的輕型資料庫,其只有五種數據類型,分別是:
NULL: 空值
INTEGER: 整數
REAL: 浮點數
TEXT: 字元串
BLOB: 大數據
它是一個輕量級的資料庫、非常小 、 移植性好、效率高、可靠
在Android系統中提供了android.database.sqlite包,用於進行SQLite資料庫的增、刪、改、查工作。
創建與刪除資料庫
封裝一個類去繼承SQLiteOpenHelper
在構造函數中傳入資料庫名稱與資料庫版本號,資料庫被創建的時候會調用onCreate(SQLiteDatabase db)
方法,資料庫版本號發生改變的時候會調用onUpgrade(SQLiteDatabase db, int oldVersion,
intnewVersion)方法,可以方便的對軟體游戲升級後做出相應處理避免覆蓋安裝資料庫發生改變產生的錯誤。調用SQLiteOpenHelper
的getReadableDatabase()方法去創建資料庫,如果資料庫不存在則創建並且返回SQLiteDatabase對象,如果資料庫存在則不創建只返回SQLiteDatabase對象。調用
deleteDatabase(DATABASE_NAME)方法 傳入資料庫名稱則可刪除資料庫。
第一種:詳細請看上一遍博客:android之利用SQLite資料庫實現登陸和注冊,http://blog.csdn.net/rhljiayou/article/details/7085347
下面介紹第二種:另一種添刪改查操作
效果圖:
布局文件很簡單,在此不再給出!!
直接給創建資料庫和表,增刪改查的代碼:
public class UserService {
private DatabaseHelper helper;
public UserService(Context context, String name, int version) {
helper = new DatabaseHelper(context, name, version);
}
public UserService(Context context, String name) {
helper = new DatabaseHelper(context, name);
}
public void insert(UserDao user) {// 插入數據
SQLiteDatabase sdb = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("username", user.getUsername());
values.put("password", user.getPassword());
sdb.insert("user", "name", values);
sdb.close();
}
public void delete(int id) {// 刪除數據
SQLiteDatabase sdb = helper.getWritableDatabase();
sdb.delete("user", "id=?", new String[]{String.valueOf(id)});
sdb.close();
}
public void update(UserDao user, int id) {// 更新數據
SQLiteDatabase sdb = helper.getWritableDatabase();
ContentValues values=new ContentValues();
values.put("username", user.getUsername());
values.put("password", user.getPassword());
sdb.update("user", values, "id=?", new String[]{String.valueOf(id)});
sdb.close();
}
public Cursor select() {// 查詢所有數據
SQLiteDatabase sdb = helper.getWritableDatabase();
return sdb.query("user", new String[]{"id as _id","username","password"},
null, null, null, null, null);
}
public UserDao find(int id){//按id查詢數據
UserDao user=null;
SQLiteDatabase sdb=helper.getWritableDatabase();
Cursor cursor=sdb.query("user", new String[]{"id","username","password"},
"id=?", new String[]{String.valueOf(id)}, null, null, null);
if(cursor.moveToFirst()){
user=new UserDao();
user.setId(cursor.getInt(0));
user.setUsername(cursor.getString(1));
user.setPassword(cursor.getString(2));
}
cursor.close();
sdb.close();
return user;
}
}
插入數據:通過insert(String table, StringnullColumnHack, ContentValues
values)方法插入數據,其中參數含義分別為:
table: 目標表名
nullColumnHack:
指定表中的某列列名。因為在SQLite中,不允許不允許插入所有列均為null的記錄,因此初始值有值為空時,此列需顯式賦予null
values:ContentValues對象,類似於java中的Map。以鍵值對的方式保存數據。
6. 資料庫中增刪改查的基本語句是什麼
資料庫中增刪改查基本語句:INSERT INTO,表名欄位列表。
資料庫是存放數據的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是資料庫並不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。
當今世界是一個充滿著數據的互聯網世界,充斥著大量的數據。即這個互聯網世界就是數據世界。數據的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。
在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關系資料庫等各個階段的發展,資料庫技術在各個方面的快速的發展。特別是關系型資料庫已經成為目前資料庫產品中最重要的一員。
80年代以來,幾乎所有的資料庫廠商新出的資料庫產品都支持關系型資料庫,即使一些非關系資料庫產品也幾乎都有支持關系資料庫的介面。
這主要是傳統的關系型資料庫可以比較好的解決管理和存儲關系型數據的問題。隨著雲計算的發展和大數據時代的到來,關系型資料庫越來越無法滿足需要,這主要是由於越來越多的半關系型和非關系型數據需要用資料庫進行存儲管理。