數(shù)據(jù)庫:sql語句增刪改查

1.數(shù)據(jù)庫的管理類


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

public class MyOpenHelper extends SQLiteOpenHelper {
/**
 * context:上下文
 * name:數(shù)據(jù)庫名字
 * factory:目的是創(chuàng)建游標(biāo)(游動光標(biāo))對象府框,默認(rèn)用null
 * version:數(shù)據(jù)庫版本扁达,從1開始遞增傻挂,不能減
 * */
    public MyOpenHelper(Context context) {
        super(context, "i01.db", null, 1);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {//數(shù)據(jù)庫第一次創(chuàng)建的時候調(diào)用
        /**適合初始化表結(jié)構(gòu),用sql語句創(chuàng)建表
         * 示例:創(chuàng)建一個兩列的表害淤,第一列為id,第二列為name
         * id 一般以下劃線開頭“_id”
         * interger 是數(shù)據(jù)類型
         * primary key 指定id為主鍵
         * autoincrement 自增長
         * varchar(20) name不超過20個字符
         * 注意:sqlite底層都將類型轉(zhuǎn)化為string類型,但為了嚴(yán)謹(jǐn)咱士,這里還是指定類型
         */
//      db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20))");
        //初始化一個三列的表
        db.execSQL("create table info(_id integer primary key autoincrement,name varchar(20),phone  varchar(20))");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//當(dāng)數(shù)據(jù)庫版本升級時調(diào)用
        /**適合更新表結(jié)構(gòu)
         * 示例:給表增加一列phone
         * varchar(20) phone 不超過20個字符
         * */
        db.execSQL("alter table info add phone varchar(20)");
        
        System.out.println("新版本數(shù)據(jù)庫:"+newVersion+"舊版本:"+oldVersion);
        
    }
}

2.增刪改查操作

public class MainActivity extends Activity {

    private MyOpenHelper myOpenHelper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        myOpenHelper = new MyOpenHelper(getApplicationContext());
//      //打開一個數(shù)據(jù)庫(如果不存在就創(chuàng)建)
//      SQLiteDatabase writableDatabase = myOpenHelper.getWritableDatabase();
//      //打開一個數(shù)據(jù)庫(如果不存在就創(chuàng)建)立由,跟上面的區(qū)別是,如果磁盤滿了序厉,返回一個只讀的數(shù)據(jù)庫
////        SQLiteDatabase readableDatabase = myOpenHelper.getReadableDatabase();
    }
    public void click1(View v) {//點擊按鈕增加一條記錄
        //獲取數(shù)據(jù)庫對象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //執(zhí)行增加一條的sql語句
        db.execSQL("insert into info(name,phone) values(?,?)",new Object[]{"張三","13111112222"});
        //數(shù)據(jù)庫用完需要關(guān)閉
        db.close();
    }
    public void click2(View v) {//刪除一條記錄
        //獲取數(shù)據(jù)庫對象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //執(zhí)行刪除一條的sql語句
        db.execSQL("delete from info where name=?",new Object[]{"張三"});
        //數(shù)據(jù)庫用完需要關(guān)閉
        db.close();
    }
    public void click3(View v) {//修改一條記錄
        //獲取數(shù)據(jù)庫對象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //執(zhí)行修改一條的sql語句
        db.execSQL("update info set phone=? where name=?",new Object[]{"1871111","張三"});
        //數(shù)據(jù)庫用完需要關(guān)閉
        db.close();
    }
    public void click4(View v) {//查詢一條記錄
        //獲取數(shù)據(jù)庫對象
        SQLiteDatabase db = myOpenHelper.getWritableDatabase();
        //執(zhí)行查詢一條的sql語句(返回的是一個結(jié)果集锐膜,后面是占位符)
        Cursor cursor = db.rawQuery("select * from info", null);//查詢所有數(shù)據(jù)
        if (cursor!=null && cursor.getCount()>0) {//查詢結(jié)果不為空,且個數(shù)大于0
            while (cursor.moveToNext()) {//循環(huán)弛房,每次都取下一個道盏,取不到則結(jié)束
                //取值,參數(shù)為列的索引文捶,從0開始
                String name = cursor.getString(1);
                String phone = cursor.getString(2);
                System.out.println("name:"+name+"  phone:"+phone);
            }
        }
        //數(shù)據(jù)庫用完需要關(guān)閉
        db.close(); 
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荷逞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子粹排,更是在濱河造成了極大的恐慌种远,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽耳,死亡現(xiàn)場離奇詭異坠敷,居然都是意外死亡妙同,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門膝迎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粥帚,“玉大人,你說我怎么就攤上這事限次∶⑽校” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵卖漫,是天一觀的道長费尽。 經(jīng)常有香客問我,道長懊亡,這世上最難降的妖魔是什么依啰? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮店枣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叹誉。我一直安慰自己鸯两,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布长豁。 她就那樣靜靜地躺著钧唐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匠襟。 梳的紋絲不亂的頭發(fā)上钝侠,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音酸舍,去河邊找鬼帅韧。 笑死,一個胖子當(dāng)著我的面吹牛啃勉,可吹牛的內(nèi)容都是我干的忽舟。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼淮阐,長吁一口氣:“原來是場噩夢啊……” “哼叮阅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泣特,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤浩姥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后状您,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體勒叠,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡兜挨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缴饭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暑劝。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖颗搂,靈堂內(nèi)的尸體忽然破棺而出担猛,到底是詐尸還是另有隱情,我是刑警寧澤丢氢,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布傅联,位于F島的核電站,受9級特大地震影響疚察,放射性物質(zhì)發(fā)生泄漏蒸走。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一貌嫡、第九天 我趴在偏房一處隱蔽的房頂上張望比驻。 院中可真熱鬧,春花似錦岛抄、人聲如沸别惦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掸掸。三九已至,卻和暖如春蹭秋,著一層夾襖步出監(jiān)牢的瞬間扰付,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工仁讨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留羽莺,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓陪竿,卻偏偏與公主長得像禽翼,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子族跛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容