日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlite 增删改查附代码

發布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlite 增删改查附代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、進入數據庫

命令行輸入下列命令進入數據庫

1.adb

2.adb shell

3.cd data

4.cd data

5.cd [包名]

6.創建數據庫后

7.cd databases

8.sqlite3 [數據庫名]????

即數據庫存放在/data/data/[包名]/databases/路徑下

?

常用命令

.schema???? 查看當前數據庫中有哪些表

查看表中數據? select * from [tablename];

?

二、知識點

1、public void execSQL(String sql);

執行單個SQL語句,但不能執行SELECT和其他有返回值的SQL語句;

?

2、SQL語句

語句:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

說明:tabname——表名,col1,col2——字段名(即列名),not null——該字段非空,primary key——主鍵(某條記錄的唯一標識符)。

?

3、public long insert (String table, String nullColumnHack, ContentValues values)

注:插入記錄,table——表名,nullColumnHack——強行插入null值的字段(列名),values——一行記錄的數據。

?

4、public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

注:更新數據庫中數據;table——想要更新的表名,values——想要更新的數據,whereClause——滿足該whereClause子句的記錄將會被更新,whereArgs——為whereClause傳入參數。(可理解為:在表table中,根據whereClause和whereArgs查找出數據,更新為values)

如:更新person_inf表中所有主鍵大于20的人的人名,

ContentValues values = new ContentValues();

values.put(“name”,“新人名”);

int result = db.update(“person_inf”,values,”_id > ?”, new Integer[]{20});

?

5、public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

注:查詢,詳情見幫助。

?

6.SQLiteOpenHelper類中的onCreate方法

public abstract void onCreate (SQLiteDatabase db);

當調用SQliteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法獲取用于操作數據庫的SQLiteDatabase實例時,如果數據庫不存在,Android系統會自動生成一個數據庫,接著調用onCreta方法,onCreate方法在初次生成數據庫時才被調用。

即:getWritableDatabase()、getReadableDatabase()在獲取實例時,數據庫不存在則創建,存在則不創建;而onCreate方法是第一次創建時自動調用的方法。因此,可重寫該方法初始化數據表結構及數據等。

?

三、數據庫版本version必須是正數!

四、掌握數據庫操作的兩個類SQLiteDatabase和SQLiteOpenHelper即可!

五、再理解數據庫和表的創建

?

六、實例代碼

package com.lucus.erseventh;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper{
??? private final static String DB_NAME = "erSeventh.db";//數據庫名稱
??? private final static String TABLE_NAME = "erSeventhTable";//表名稱
??? public final static String FIELD_ID="_id";//表列名,主鍵
??? public final static String FIELD_EVENT_NAME="eventName";//表列名
??? public final static String FIELD_REMIND_TIME="remindTime";//表列名
??? /**在SQLiteOpenHelper的子類中,必須有該構造函數;context即activity對象,name即數據庫名*/
??? public DatabaseHelper(Context context, String name, CursorFactory factory,
??????????? int version) {
??????? super(context, DB_NAME, factory, version);//調用父類的構造函數
??????? // TODO Auto-generated constructor stub
??? }
??? /**在SQLiteOpenHelper的子類中,必須有該構造函數;context即activity對象,name即數據庫名*/
??? /**該函數是在第一次創建數據庫時執行,調用getWritableDatabase()或getReadableDatabase()方法時自動調用*/
??? public void onCreate(SQLiteDatabase db) {
??????? // TODO Auto-generated method stub
??????? String sql = " create table " +
??????????????????? TABLE_NAME +
??????????????????? " ( " +
??????????????????? FIELD_ID +
??????????????????? " integer primary key, " + //注意"前后有空格!!!
??????????????????? FIELD_EVENT_NAME +
??????????????????? " varchar, " +??????
??????????????????? FIELD_REMIND_TIME +
??????????????????? " varchar ) ";
??????? db.execSQL(sql);
//??????? db.execSQL("create table evtesttable(_id int primary key,eventName varchar(20)),remindTime varchar(20)");
//??????? db.execSQL("create table eventName(_id int primary key,eventName varchar(20))");
??????? System.out.println("Create a table");
??? }
??? /**該函數是在第一次創建數據庫時執行,調用getWritableDatabase()或getReadableDatabase()方法時自動調用*/
??? /**插入*/
??? public void insert(String myEventName, String myRemindTime)
??? {
??????? SQLiteDatabase db = this.getWritableDatabase();
??????? ContentValues cv = new ContentValues();
??????? cv.put(FIELD_EVENT_NAME, myEventName);
??????? cv.put(FIELD_REMIND_TIME, myRemindTime);
??????? db.insert(TABLE_NAME, null, cv);//第二個參數為null,主鍵自增1
??????? db.close();
??????? System.out.println("Insert data");
??? }
??? /**插入*/
??? /**修改,修改FIELD_ID為id的記錄,修改該記錄的FIELD_EVENT_NAME和FIELD_REMIND_TIM*/
??? public void update(int id,String newEventName,String newRemindTime)
??? {
??????? SQLiteDatabase db = this.getWritableDatabase();
??????? String where = FIELD_ID + "=?";
??????? String[] whereValue = {Integer.toString(id)};
??????? ContentValues cv=new ContentValues();
??????? cv.put(FIELD_EVENT_NAME, newEventName);
??????? cv.put(FIELD_REMIND_TIME, newRemindTime);
??????? db.update(TABLE_NAME, cv, where, whereValue);
??????? System.out.println("Modify data");
??? }
??? /**修改,修改FIELD_ID為id的記錄,修改該記錄的FIELD_EVENT_NAME和FIELD_REMIND_TIM*/
??? /**刪除,刪除FIELD_ID為id的記錄*/
??? public void delete(int id)
??? {
??????? SQLiteDatabase db=this.getWritableDatabase();
??????? String where=FIELD_ID + "=?";
??????? String[] whereValue={Integer.toString(id)};
??????? db.delete(TABLE_NAME, where, whereValue);
??????? System.out.println("Delete data");
??? }
??? /**刪除,刪除FIELD_ID為id的記錄*/

??? /**刪除數據庫?*/
??? public boolean deleteDBByName(String DBName) {
??????? Context context = null;
??????? context.deleteDatabase(DBName);
??????? return false;
??? }
??? /**刪除數據庫?*/
??? /**獲取游標*/
??? public Cursor getCursor()
??? {
??????? SQLiteDatabase db=this.getWritableDatabase();
??????? Cursor cursor=db.query(TABLE_NAME, null, null, null, null, null, null);
??????? return cursor;
??? }
??? /**獲取游標*/
??? /**查詢,查詢FIELD_ID為id的記錄*/
??? public Cursor query(int id)
??? {
??????? SQLiteDatabase db = this.getWritableDatabase();
??????? String where = FIELD_ID + "=?";
??????? String[] whereValue = {Integer.toString(id)};
??????? Cursor cursor = db.query
??????????????? (
??????????????????? TABLE_NAME,
??????????????????? new String []{"_id","eventName","remindTime"},
??????????????????? where,
??????????????????? whereValue,
??????????????????? null, null, null
??????????????? );
??????? return cursor;
??? }
??? /**查詢,查詢FIELD_ID為id的記錄*/
??? @Override
??? public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
??????? // TODO Auto-generated method stub
??? }
}//end class DatabaseHelper

轉載于:https://blog.51cto.com/chinesefys/971420

總結

以上是生活随笔為你收集整理的sqlite 增删改查附代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。