第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Android中SQLite數(shù)據(jù)庫(kù)插入或替換

標(biāo)簽:
Android

SQLite是Android内置的轻量级数据库。我们在操作数据库的时候,经常有这样的需求:

如果没有这个Primery Key的数据,就插入这条数据;如果已经存在了,就更新这条数据。

之前我的做法是先SELECT一下,看是否有数据?如果有的话,就UPDATE这条数据,如果没有的话,就INSERT一条数据。

最近发现更好的解决方法,一条SQL语句就能解决。假设你的表包含三列,分别是id、name、role,其中id是主键。

INSERT OR REPLACE INTO Employee (id, name, role)  
  VALUES (1, 'John Foo', 'CEO');

其中关键是INSERT OR REPLACE。如果数据库表中已经包含了id=1的情况,就会直接替换掉。

要达到同样的目的,可以在创建表的Schema的时候,使用ON CONFLICT REPLACE来实现。如下:

CREATE TABLE Employee  
    (id INTEGER PRIMARY KEY ON CONFLICT REPLACE, 
    name TEXT NOT NULL, 
    role TEXT);

这时候,你就可以直接使用INSERT了,如果id冲突了,会直接替换掉:

INSERT INTO Employee (id, name, role)  
    VALUES (1, 'John Foo', 'CEO');INSERT INTO Employee (id, name, role)  
    VALUES (1, 'John Foo', 'CTO');SELECT * FROM Employee;  1|John Foo|CTO

这里看到,针对上面的方法更好的补充。例如你不插入全部的列的情况下,如下面的语句:

INSERT OR REPLACE INTO Employee (id, role)  
  VALUES (1, 'code monkey');

这就会出现问题,如果存在id=1的数据,那么会插入一个新的,原来的name值会被丢掉,会被设置为NULL或者默认值。更好的解决方法如下:

INSERT OR REPLACE INTO Employee (id, role, name)  
  VALUES (1, 
          'code monkey',
          (SELECT name FROM Employee WHERE id = 1)
         );

这样,如果存在原来id=1的数据,就会保留原来的name值,否这就为默认值或者NULL。再如下面的语句:

INSERT OR REPLACE INTO Employee (id, name, role)  
  VALUES (  1, 
            'Susan Bar',
            COALESCE((SELECT role FROM Employee WHERE id = 1), 'Benchwarmer')
         );

这语句的含义是,如果存在id=1的,就保留原来的name值,否则就设置为Benchwarmer。这里关键利用了COALESCE(a, b, ...)函数,此函数返回第一个非空参数,全为NULL时返回NULL。

原文链接:http://www.apkbus.com/blog-839902-61326.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消