SQLite資料庫之資料新增與刪除
- 先自定義一個類繼承自SQLiteOpenHelper
- 建立一個構造方法
- 重寫兩個建立資料庫的方法onCreate()和onUpgrade(),分別是建立和更新資料庫。
publicclassDBOpenHelperextendsSQLiteOpenHelper{
publicDBOpenHelper(Context context
,String name,SQLiteDatabase.CursorFactory factory,int version){super(context, name, factory, version);
}
@Override
//資料庫生成
publicvoid onCreate(SQLiteDatabase sqLiteDatabase){
}
@Override
//資料庫升級
publicvoid onUpgrade(SQLiteDatabase sqLiteDatabase,int i,int i1){
}
}
- 構造方法第二個引數是資料庫的名稱。第三個是遊標工廠,資料庫查詢結果的物件,Cursor相當於一個指標,每讀取一個遊標下移。一般遊標設定為null。Version資料庫版本。
- 在onCreate()方法中建立表。 sqLiteDatabase。execSQL("");
SQLite官網SQLite.org其中有SQL操作語句
- 在MainActivity中的onCreate中建立DBOpenHelper物件,並且傳入引數。
DBOpenHelper helper=newDBOpenerHelper(this,"資料庫名稱.db",null,1);
- 呼叫可寫的方法。返回物件是SQLite資料庫
SQLiteDatabase databaseWriter=helper.getWritableDatabase();
- 然後建立一個ContentValues物件,它是Android封裝的一條資料
ContentValues cv=newContentValues();
cv.put("name","小張");
cv.put("sex","男");
- 向可寫的資料庫中插入資料,呼叫insert("表名","空列的填充用null",values);方法 //values就是上述的物件
databaseWriter.insert("user",null,cv);
databaseWriter.close();
- 建立可讀的方法。
- 呼叫query("表名",”返回哪幾列的資料“,”查詢的條件“,”查詢的條件的引數“,”“,”“,"")方法查詢資料。
- 返回哪幾列的資料返回的是一個數組,如查詢name列,可寫為new String[]{"name"},null預設返回所有列資料。
- 查詢的條件的引數返回的是一個字串陣列。 返回Cursor(遊標)型別物件
- 呼叫query("表名",”返回哪幾列的資料“,”查詢的條件“,”查詢的條件的引數“,”“,”“,"")方法查詢資料。
Cursor c=dbRead.query("user",newString[]{"name","sex"},"name=?",newString[]{"小張"},null,null);
- 利用迴圈移到下一個資料,讀值
將資料呈現在ListView中while(c.moveToNext()){
String name = c.getString(c.getColumnIndex("name"));//利用列的索引獲取使用者名稱
String sex=c.getString(c.getColumnIndex("sex"));
}
- 主類需要繼承ListActivity
- layout中新增ListView
- 利用Curson物件建立一個SimpleCursonAdapter物件
- private SimpleCursonAdapter adapter;
- adapter=newSimpleCursonAdapter(context,layout,Cursor,from,to);
- 建立兩個顯示文字,顯示使用者名稱和性別
adapter=new SimpleCursonAdapter(this,layout,c,newString[]{"name","sex"},newint[]{R.id.tvName,R.id.tvSex});
- 使用setListAdapter呈現
setListAdapter(adapter);
- 如果使用Android中的SimpleCursonAdapter,必須要求資料庫中有一列名為”_id"。
- 因此要回到工具類SQLiteOpenHelper中的onCreate方法中,在執行建立table語句中新增一列"_id integer primary key autoincrement"
sqliteDatabase.execSQL("create table user(_id integer primary key autoincrement,name text default null,sex text default null)");
在layout中建立兩個文字框和一個新增按鈕,用於新增使用者名稱和性別資料。分別在主類中宣告,新增按鈕建立監聽。
將Cursor的資料庫查詢方法放到一個新的方法refreshListView()中,可以保持ListView的重新整理狀態。//全域性中定義
private
DBOpenHelper helper; private SQLiteDatabasedatabaseWriter,databaseRead;privateOnclick btnAddListener=newOnClickListener(){
publicvoid onClick(View v){
ContentValues cv = new ContentValues(); cv.put("name",et_name.getText().toString()); cv.put("sex",et_sex.getText().toString()); databaseWriter.insert("user",null,cv);refreshListView();}
};
btn_add.setOnClickListener(btnAddListener);
設定彈出對話方塊,將某一條資料刪除privatevoid refreshListView(){ //兩次呼叫該方法 類中呼叫一次。
Cursor c = databaseRead.query("user",null,null,null,null,null,null);
adapter.changeCursor(c);
}
- 設定列表項的長按監聽事件
------------------完整程式碼------------------ DBOpenHelpergetListView().setOnItemLongCilckListener(newOnItemLongCilckListener(
public boolean onItemLongClick(AdapterView<?> parent,View view,final int position,long id){
new AlertDialog.Builder(MainActivity.this).setTitle("提醒").setMessage("您確定要刪除該項嗎").setNegativeButton("取消",null).setPositiveButton("確定",new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
Cursor c = adapeter.getCursor();
c.moveToPosition(position);
int itemId=c.getInt(c.getColunmIndex("_id"):
databaseWriter.delete("user","_id=?",new String[]{itemId+""});
refreshListView();
}
}).show();//建立一個彈出對話方塊
return true; //是否執行長按
}
));
主類import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
/**
* Created by 59666 on 2016/10/20.
*/
publicclassDBOpenHelperextendsSQLiteOpenHelper{
publicDBOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version){
super(context, name, factory, version);
}
@Override
publicvoid onCreate(SQLiteDatabase sqLiteDatabase){
sqLiteDatabase.execSQL("create table user(_id integer primary key autoincrement,name text default null,sex text default null)");
}
@Override
publicvoid onUpgrade(SQLiteDatabase sqLiteDatabase,int i,int i1){
}
}
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v4.widget.SimpleCursorAdapter;
相關推薦
SQLite資料庫之資料新增與刪除
-------------------------------------- SQLite資料庫-------------------------------------- Androi
Qt5.8之QListWidgetItem的新增與刪除
1.實現的功能 在listWidget中水平添QListWidgetItem,點選按鈕刪除所有QListWidgetItem,下面直接上程式碼,程式碼中有每一步的註釋。 2.程式碼實現 #include "mainwindow.h" #include "ui_mainwindow.h" #incl
react+antd系列之Form表單(1):新增與刪除
在用antd的時候,我們如果要對錶單進行新增和刪除該怎麼弄呢,如下: import { connect } from 'dva'; import { Form, Input, Button } from 'antd'; import styles from './eg1.css';
資料庫MySQL之如何新增、刪除列?
文章目錄 新增/刪除 列 1. 新增單列 2. 新增多列:無法指定FIRST/AFTER、只能預設為最後方。 3. 刪除單列 4. 刪除多列 新增/刪除 列 1
Java JDBC資料庫 之 讀取,新增,刪除,修改
下載 Oracle 或者 Mysql Jar 驅動 mysql-connector-java-3.0.10-stable-bin.jar ojdbc14.jar package com.jdbc.test; import java.sql.Connection;
解決Sqlite資料庫,資料刪除後佔用空間不變的問題
sqlite資料庫庫檔案在使用過後,隨著資料的增多,檔案大小也會隨之變大。但是在把所有表中資料刪除以後發現sqlite資料庫檔案大小沒有變化,還是佔用原來大小的空間。 造成這種情況的原因是:sqlite在之前使用的時候,隨著資料的插入,會分配磁碟空間來供使用,在刪除資料以後
從零開始學 Web 之 jQuery(四)元素的建立新增與刪除,自定義屬性
一、元素的建立新增和刪除 1、方式一:以物件的方式建立元素 append,appendTo :在被選元素所有子元素的結尾插入內容(增加子元素)。 prepend,prependTo:在被選元素所有子元素的開頭插入元素(增加子元素)。 before:在當前被選元素之後插入內容(相當於增加兄弟元素)。 af
React實現表單資料的新增與刪除
最近在學習React,做了一個簡單的Demo,寫成部落格,用以自勉。Demo功能:在輸入框中輸入資料後,點選儲存按鈕,資料將會逐一顯示在輸入框下方,點選儲存後顯示的任何一條資料,該資料即可被刪除。 實現思路 在開始實現之前,我們需要理清我們的思路,這
Netty原始碼分析之ChannelPipeline(二)—ChannelHandler的新增與刪除
上篇文章中,我們對Netty中ChannelPipeline的構造與初始化進行了分析與總結,本篇文章我們將對ChannelHandler的新增與刪除操作進行具體的的程式碼分析; 一、ChannelHandler的新增 下面是Netty官方的一段demo原始碼,可以看到在服務端初始化時執行了向Channel
MySQL外來鍵新增與刪除
ALTER table erp_bom_detail ADD CONSTRAINT `FK_bom_detail` FOREIGN KEY (`bom_id`) REFERENCES erp_bom(`bom_id`) ALTER 的是子表 alter t
四、資料庫之資料型別
首先補充點了解的小知識; select * from mysql.user #顯示出來亂了 select * from mysql.user\G #加了\G後一行一行顯示了 一、資料型別:分不同種類去存不同型別的資料 儲存引
hibernate多對多關係的新增與刪除
程式碼 bookdao public Integer save(Book book) { Session session = SessionFactoryUtils.getSession(); Transaction transaction = session.beginTran
《SQL入門經典》筆記(第二章:建立資料庫之資料型別)
“建立資料庫”包括五個內容:定義資料結構、管理資料庫物件、規格化過程、操作資料以及管理資料庫事務 1. 什麼是資料型別? 資料型別用於指定特定列所包含資料的規則,它決定了資料儲存在列裡的方式。SQL最基本的資料型別有字串、數值、日期和時間(其實每個實現都有自己的資料型別
JavaSE之資料型別與運算子
package cn.shuju.java; import java.io.IOException; //本節目標 //1.java識別符號與關鍵字 //2.java資料型別劃分 //3.java運算子 //對於類和變數的命名,java的標準命名規範為“駝峰”命名法 //對於類名,類
資料庫之資料型別
首先補充點了解的小知識; select * from mysql.user #顯示出來亂了 select * from mysql.user\G #加了\G後一行一行顯示了 一、資料型別:分不同種類去存不同型別的資料 儲存引擎決定了表的型別,而表記憶體放的資料也要有不同的型別,每種資料型別
html中元素動態新增與刪除
<div class="unit" > <label>產品引數</label> <input type="button" value="新增" onclick="addProduc
Hibernate持久層框架使用【三】資料查詢與刪除
Hibernate資料查詢可以通過hibernate封裝好的兩個方法來實現 分別是get方法和load方法,這兩個方法都是通過主鍵來查詢資料 get方法: 新建個get.class類來測試一下,下面貼上程式碼 public class get { public static vo
Hibernate持久層框架使用【二】資料新增與修改
Hibernate的資料新增與修改 新增資料: hibernate提供了這幾種新增資料的方法,分別是: save方法、saveOrUpdate方法、merge方法以及persist方法 在對資料庫進行操作時,過程是先開啟事務—操作資料庫—提交事務 上一篇部落格寫的hibernat
網站運維技術與實踐之資料分析與報警
對於日益積累的監控資料,顯然需要有規劃地進行儲存和分析,做到“故障沒來時有預防,故障來臨時有提示,故障到來時有解決方案”。 一、時間序列儲存 對於大多數監控資料,都有一個天然的類似資料庫主鍵的屬性,那就是時間。所以,通常情況下,各類監控系統的後臺資料庫都可以認為是時間序列的資
部落格之資料結構與演算法目錄
一、結構 為了能夠方便的檢視資料結構與演算法知識點,我將文章目錄羅列了一下 (1)演算法 1.複雜度分析 演算法 時間和空間複雜度的簡單理解小述 2.排序演算法知識點總結 演算法 直接插入排序小述 演算法 希爾排序小述 演算法 氣