Android SQLite 的簡單實例

来源:http://www.cnblogs.com/ljy-1471914707/archive/2016/04/28/5444531.html
-Advertisement-
Play Games

1.前言: 今天再一次去蹭了一下某老師的android課,這一次講的是Android的SQLite的使用,老師當場講解了他自己做的例子。 回來之後,我春心萌動,不得不拿著參考資料再做了一個類似的例子,其實我已經過幾遍SQLite的內容了,但是認識還是不深刻。 2.SQLite繼承 要想使用SQLit ...


  

  1.前言:

    今天再一次去蹭了一下某老師的android課,這一次講的是Android的SQLite的使用,老師當場講解了他自己做的例子。

  回來之後,我春心萌動,不得不拿著參考資料再做了一個類似的例子,其實我已經過幾遍SQLite的內容了,但是認識還是不深刻。

    2.SQLite繼承  

    要想使用SQLite,就必需設計一個相應類,並且繼承SQLiteOpenHelper。

    基本上要操作的是onCreate函數(註意自動生成,執行語句建議還是單獨寫),這個函數在資料庫被提及時便會執行,所以添加的內容一般就是建表操作。

  person.java

package Model;

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

public class Person extends SQLiteOpenHelper {

    public static final String CREATE_BOOK = "create table person("    
    + "_id integer primary key autoincrement, "
    + "name text, "     
    + "tel text)";
    public Person(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL(CREATE_BOOK); //建表
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
}

  3.使用

    SQLite的使用其實套路都一樣的。

personHelper = new Person(this, "personDB.db", null, 1);//new一個類,註意*.db不能跟類重名

    這裡因為不理解的原因,“personDB.db”我第一次海用了"person".....

  增加:getWritableDatabase在這裡我很不理解,getReadDatabase一般還用不到,看了一次百度的一些解答還是不太懂,那就一直用getWritableDatabase吧。

 SQLiteDatabase db = personHelper.getWritableDatabase();
                String str_name = edit_name.getText().toString();
                String str_tel = edit_tel.getText().toString();
                ContentValues cv = new ContentValues();
                cv.put("name", str_name);
                cv.put("tel", str_tel);
                db.insert("person",null,cv);

  查詢:

SQLiteDatabase db = personHelper.getWritableDatabase();
                String result = "";
                Cursor cursor = db.rawQuery("select * from person", null);
                cursor.moveToFirst();
                if (cursor.moveToFirst()){
                    do{
                        int id = cursor.getInt(0);
                        String nameString = cursor.getString(1);
                        String telString = cursor.getString(2);
                        result += "id="+id+"    name:"+nameString+"        tel:"+telString+"\n";
                        Log.d("sql", nameString);
                        //Log.d("sql", id);
                        Log.d("sql", telString);
                    }while(cursor.moveToNext());                    
                }                
                cursor.close();

  刪除:

SQLiteDatabase db = personHelper.getWritableDatabase();
                String str_name = edit_name.getText().toString();
                String str_tel = edit_tel.getText().toString();
                db.delete("person", "name=? and tel=?", new String[]{str_name,str_tel});

    修改:

SQLiteDatabase db = personHelper.getWritableDatabase();
                String str_name = edit_name.getText().toString();
                String str_tel = edit_tel.getText().toString();
                ContentValues cv = new ContentValues();
                cv.put("tel", str_tel);
                db.update("person", cv, "name=?", new String[]{str_name});

 

  Mainactivity.java

package com.sqlitetest.app;

import Model.Person;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class MainActivity extends Activity {
    
    Button btn_add = null;
    Button btn_delete = null;
    Button btn_update = null;
    Button btn_search = null;
    EditText edit_name = null;
    EditText edit_tel = null;
    TextView txt_result = null;
    Person personHelper = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        personHelper = new Person(this, "personDB.db", null, 1);//new一個類,註意*.db不能跟類重名
        btn_add = (Button) findViewById(R.id.btn_add);
        btn_delete = (Button) findViewById(R.id.btn_delete);
        btn_search = (Button) findViewById(R.id.btn_search);
        btn_update = (Button) findViewById(R.id.btn_update);
        edit_name = (EditText) findViewById(R.id.edit_name);
        edit_tel = (EditText) findViewById(R.id.edit_number);
        txt_result = (TextView) findViewById(R.id.txt_result);
        txt_result.setMovementMethod(new ScrollingMovementMethod());  //使得內容多時textview可以滾動
        
        btn_add.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                SQLiteDatabase db = personHelper.getWritableDatabase();
                String str_name = edit_name.getText().toString();
                String str_tel = edit_tel.getText().toString();
                ContentValues cv = new ContentValues();
                cv.put("name", str_name);
                cv.put("tel", str_tel);
                db.insert("person",null,cv);
                Log.d("sql", str_name);
                Log.d("sql", str_tel);
            }
        });
        
        
        btn_search.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                SQLiteDatabase db = personHelper.getWritableDatabase();
                String result = "";
                Cursor cursor = db.rawQuery("select * from person", null);
                cursor.moveToFirst();
                if (cursor.moveToFirst()){
                    do{
                        int id = cursor.getInt(0);
                        String nameString = cursor.getString(1);
                        String telString = cursor.getString(2);
                        result += "id="+id+"    name:"+nameString+"        tel:"+telString+"\n";
                        Log.d("sql", nameString);
                        //Log.d("sql", id);
                        Log.d("sql", telString);
                    }while(cursor.moveToNext());                    
                }                
                cursor.close();
                txt_result.setText(result);
            }
        });
        
        btn_delete.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                SQLiteDatabase db = personHelper.getWritableDatabase();
                String str_name = edit_name.getText().toString();
                String str_tel = edit_tel.getText().toString();
                db.delete("person", "name=? and tel=?", new String[]{str_name,str_tel});
            }
        });
        btn_update.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                SQLiteDatabase db = personHelper.getWritableDatabase();
                String str_name = edit_name.getText().toString();
                String str_tel = edit_tel.getText().toString();
                ContentValues cv = new ContentValues();
                cv.put("tel", str_tel);
                db.update("person", cv, "name=?", new String[]{str_name});
            }
        });
    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.sqlitetest.app.MainActivity" >

    <TextView
        android:id="@+id/txt_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:text="@string/name"
        android:textSize="20sp" />

    <EditText
        android:id="@+id/edit_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/txt_name"
        android:layout_alignBottom="@+id/txt_name"
        android:layout_marginLeft="21dp"
        android:layout_toRightOf="@+id/txt_name"
        android:ems="10"
        android:inputType="textPersonName" />

    <EditText
        android:id="@+id/edit_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/txt_number"
        android:layout_alignLeft="@+id/edit_name"
        android:ems="10"
        android:inputType="number" />

    <TextView
        android:id="@+id/txt_number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/edit_name"
        android:layout_marginTop="18dp"
        android:layout_toLeftOf="@+id/edit_name"
        android:text="@string/phonenumber"
        android:textSize="20sp" />

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/btn_update"
        android:layout_below="@+id/btn_update" >
    </ScrollView>

    <Button
        android:id="@+id/btn_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/edit_number"
        android:layout_below="@+id/edit_number"
        android:layout_marginRight="47dp"
        android:text="@string/add" />

    <Button
        android:id="@+id/btn_delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btn_update"
        android:layout_toRightOf="@+id/txt_number"
        android:text="@string/delete" />

    <TextView
        android:id="@+id/txt_result"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignTop="@+id/scrollView1"
        android:layout_toRightOf="@+id/txt_number"
        android:maxLines = "1000"//這個滾動要加上去,最大怎麼表示不清楚
        android:scrollbars = "vertical"//這個也是滾動必須加的
        android:text="@string/result" />

    <Button
        android:id="@+id/btn_update"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btn_add"
        android:layout_below="@+id/btn_add"
        android:layout_marginTop="16dp"
        android:text="@string/update" />

    <Button
        android:id="@+id/btn_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/txt_result"
        android:layout_alignLeft="@+id/txt_result"
        android:text="@string/search" />

</RelativeLayout>

 

    


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

-Advertisement-
Play Games
更多相關文章
  • 最近拜讀了曾探所著的《JavaScript設計模式與開發應用》一書,在讀到發佈-訂閱模式一章時,作者不僅給出了基本模式的通用版本的發佈-訂閱模式的代碼,最後還做出了擴展,給該模式增加了離線空間功能和命名空間功能,以達到先發佈再訂閱的功能和防止名稱衝突的效果。但是令人感到遺憾的是最終代碼並沒有給出足夠 ...
  • 目前前端框架太多,接觸過angular、ember,現在開始倒騰vue 此處用到v-if、v-else、v-show,v-if或讓元素不在DOM上,v-show只是改變display:block屬性,感覺v-if好 感覺跟適合、 演示效果:http://wjf444128852.github.io/ ...
  • × 目錄 [1]水平對齊+行高 [2]水平+垂直對齊 [3]margin+垂直對齊[4]absolute[5]flex 前面的話 水平居中和垂直居中已經單獨介紹過,本文將介紹水平垂直同時居中的5種思路 思路一: text-align + line-height實現單行文本水平垂直居中 思路二: te ...
  • 承接上一篇:【CSS3進階】酷炫的3D旋轉透視 。 最近入坑 Web 動畫,所以把自己的學習過程記錄一下分享給大家。 CSS3 3D 行星運轉 demo 頁面請戳:Demo。(建議使用Chrome打開) 本文完整的代碼,以及更多的 CSS3 效果,在我 Github 上可以看到,也希望大家可以點個 ...
  • 1、在進行JS記憶體泄露檢查之前,先要瞭解JS的記憶體管理: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management 2、學習使用Chrome Profile進行性能調優、記憶體分析: http://blog.jo ...
  • 屬性關聯特定類、結構或枚舉的值,存儲屬性將存儲常量和變數作為實例的一部分,計算屬性用於計算一個值,而不進行存儲。計算屬性可以用於類、結構體和枚舉里,存儲屬性只能用於類和結構體。存儲屬性和計算屬性通常用於特定類型的實例,但是,屬性也可以直接用於類型本身,這種屬性稱為類型屬性。另外,還可以定義屬性監視器 ...
  • 自定義tableViewCell 1、獨立使用xib創建的cell不需要使用:註冊cell,不然會使用不了,如下代碼 [self.tableView registerClass:[ableViewCell class] forCellReuseIdentifier:@“actionCell"]; 問 ...
  • 怎樣在代碼文件中修改控制項的高低 有些時候使用setHight()或者setWidth()不管用就需要使用別的方法,下麵有一種方法 你使用的佈局.LayoutParams lp = new 你使用的佈局.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutPar ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...