Android SQL語句實現資料庫的增刪改查

来源:http://www.cnblogs.com/wuyudong/archive/2016/06/06/5563848.html
-Advertisement-
Play Games

本文介紹android中的資料庫的增刪改查 複習sql語法: * 增 insert into info (name,phone) values ('wuyudong','111') * 刪 delete from person where name = 'wuyudong' * 改 update p ...


本文介紹android中的資料庫的增刪改查

複習sql語法:

* 增

insert into info (name,phone) values ('wuyudong','111')

* 刪

delete from person where name = 'wuyudong'

* 改

update person set number='119' where name='wuyudong'

* 查

select * from person

select * from person where name='wuyudong'

資料庫文件是在 /data/data/包名/databases/xxx.db


下麵使用代碼完成相關的操作

首先定義一個Person類

package com.wuyudong.db.domain;

public class Person {
    private int id;
    private String name;
    private String number;

    public Person() {
        
    }

    public Person(int id, String name, String number) {
        this.id = id;
        this.name = name;
        this.number = number;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

}

接著實現相關操作的代碼:

package com.wuyudong.db.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.wuyudong.db.PersonSQLiteOpenHelper;
import com.wuyudong.db.domain.Person;

public class PersonDao {
    private PersonSQLiteOpenHelper helper;

    public PersonDao(Context context) {
        helper = new PersonSQLiteOpenHelper(context);
    }

    /**
     * 添加一條記錄到資料庫
     * 
     * @param name
     *            姓名
     * @param number
     *            電話
     */
    public void add(String name, String number) {
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("insert into person (name,number) values (?,?)",
                new Object[] { name, number });
        db.close();
    }

    /**
     * 查詢記錄是否存在
     * 
     * @param name
     *            姓名 return true存在, false不存在
     */
    public boolean find(String name) {
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.rawQuery("select * from person where name=?",
                new String[] { name });
        boolean result = cursor.moveToNext();
        cursor.close();
        db.close();
        return result;
    }

    /**
     * 
     * @param name
     *            要修改的人的姓名
     * @param newnumber
     *            新的號碼
     */
    public void update(String name, String newnumber) {
        SQLiteDatabase db = helper.getReadableDatabase();
        db.execSQL("update person set number=? where name=?", new Object[]{newnumber,name});
        db.close();
    }
    
    /**
     * 刪除一條記錄
     * @param name 
     */
    public void delete(String name) {
        SQLiteDatabase db = helper.getReadableDatabase();
        db.execSQL("delete from person where name=?", new Object[]{name});
        db.close();
    }
    
    /**
     * 返回全部的資料庫信息
     * @return
     */
    public List<Person> findAll() {
        List<Person> persons = new ArrayList<Person>();
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor cursor = db.rawQuery("select * from person", null);
        while(cursor.moveToNext()){
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String name = cursor.getString(cursor.getColumnIndex("name"));
            String number = cursor.getString(cursor.getColumnIndex("number"));
            Person person = new Person(id, name, number);
            persons.add(person);
        }
        cursor.close();
        db.close();
        return persons;
    }

}

完整的測試代碼如下:

package com.wuyudong.db.test;

import java.util.List;

import com.wuyudong.db.PersonSQLiteOpenHelper;
import com.wuyudong.db.dao.PersonDao;
import com.wuyudong.db.domain.Person;

import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;

public class TestPersonDB extends AndroidTestCase {
    public void testCreateDB() throws Exception {
        PersonSQLiteOpenHelper helper = new PersonSQLiteOpenHelper(getContext());
        SQLiteDatabase db = helper.getWritableDatabase();
    }

    public void testAdd() throws Exception {
        PersonDao dao = new PersonDao(getContext());
        dao.add("wuyudong", "666");
    }

    public void testFind() throws Exception {
        PersonDao dao = new PersonDao(getContext());
        boolean result = dao.find("zhangsan");
        assertEquals(true, result);
    }

    public void testUpdate() throws Exception {
        PersonDao dao = new PersonDao(getContext());
        dao.update("zhangsan", "655");
    }

    public void testDelete() throws Exception {
        PersonDao dao = new PersonDao(getContext());
        dao.delete("zhangsan");
    }

    public void testFindall() throws Exception {
        PersonDao dao = new PersonDao(getContext());
        List<Person> persons = dao.findAll();
        for (Person person : persons) {
            System.out.println(person.toString());
        }
    }
}

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 說到自定義控制項不得不提的就是介面回調,在Android開發中介面回調用的還是蠻多的。在這篇博客開始的時候呢,我想聊一下iOS的自定義控制項。在iOS中自定義控制項的思路是繼承自UIView, 在UIView的子類中組合一些控制項,對外暴漏一些屬性和回調介面,並留有必要的實現方法。在iOS自定義控制項中常用的 ...
  • 想在移動開發大餐中分一杯羹,體驗最火最炫的技術?小伙子,很有眼光嘛 毫無疑問,移動開發在目前和未來幾年內都會盛極一時。無數開發職位虛位以待。各大公司都在尋找各種層次的程式員——新手級、入門級、中級、老手、專家。 本文是寫給新手們的——我會幫你們找到第一份iOS開發工作。 “我幹嘛聽你的?”, 你可能 ...
  • 歸屬地數據源 http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx webxml網站還支持其他請求方式 如SOAP等等 界面比較簡單 <?xml version="1.0" encoding="utf-8"?> <LinearLa ...
  • 1. iPad 現有型號: iPad Pro, iPad Air, iPad mini 均配備Retina顯示屏。早期還有iPad 依次對應的坐標系及解析度: iPad Pro 坐標系:1366 x 1024 解析度:2732 x 2048 iPad Air 坐標系:1024 x 768 解析度:2 ...
  • dark_gmn 的博客 http://blog.csdn.net/dark_gmn?viewmode=contents Tel_小超 的博客 http://blog.csdn.net/qq_26544491?viewmode=contents youxianming的博客 http://www.c ...
  • Google開源的二維碼庫zxing非常火,但使用時也出現了一些小問題,比如擴展性差,取景框拉伸,自定義界面不方便等。我修改了部分代碼來滿足自己的需求。 ...
  • 具體解決辦法 1、打開任務管理器,結束adb進 2、此時android console下麵會出現錯誤信息 3、切換到dos下麵運行: adb start-server 4.重新run as 搞定 ...
  • 在Activity中添加菜單 1.在res目錄下新建文件夾menu 右擊res,選擇new->Folder,Folder name寫為menu 2.在新建的menu目錄下新建一個xml文件 右擊menu,點擊new->Android XML File,在彈出的框中填入一個名字,比如main,點擊Fi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...