成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在SQLite中通過Replace來實現插入和更新

數據庫 其他數據庫
你可能在批量處理一個事務的時候,想要批量插入一系列的數據,但是這些數據當添加完一次之后,重新添加的時候,你不想要重新添加,只是想將原有的數據進行更新,例如:我想要通過Excel將一系列的圖書導入到數據庫中,而這些圖書在你下一次編輯之后,重新導入,只是對原有的數據進行修改。以上是一個業務的場景。

你可能在批量處理一個事務的時候,想要批量插入一系列的數據,但是這些數據當添加完一次之后,重新添加的時候,你不想要重新添加,只是想將原有的數據進行更新,例如:我想要通過Excel將一系列的圖書導入到數據庫中,而這些圖書在你下一次編輯之后,重新導入,只是對原有的數據進行修改。以上是一個業務的場景。

在MSSQL中,你可以使用諸如:

  1. view sourceprint?IF NOT EXISTS(SELECT * FROM Book WHERE ….) THEN INSERT INTO ... ELSE UPDATE SET ... 

這樣的SQL語法表示。而在SQLite中,不支持這樣的語法。

而對應的,在Sqlite中可以使用 Replace Into 或者 Insert Or Replace Into 這樣的語法格式。

現在,我使用SQLite Developer的Sqlite客戶端數據庫管理工具,來創建數據表,對應字段如下:

 

然后,標簽切換到“索引”欄:

 

這里我將Name(書名)和Author(作者)創建索引,并且規定為***索引。保存數據表。

這樣就意味著只要Name和Author對應是相同的,Replace into 對應的就變成 Update,如果不完成相同,就對應變成 Insert 語句。

于是我在“查詢數據”中,執行SQL語句:

  1. view sourceprint?01REPLACE INTO tbl_book  
  2.  (  
  3.  Name ,  
  4.  Author ,  
  5.  PublishDate ,  
  6.  pagecount ,  
  7.  Memo  
  8.  )  
  9. VALUES 
  10.  (  
  11.  'WF高級程序設計' ,  
  12.  'Bruce Bukovics' ,  
  13.  date( ) ,  
  14.  454 ,  
  15.  'Test' 
  16.  ) ; 

***次執行時,由于表中沒有數據,所以命令轉換為Insert;

 

當第二次執行時,由于表中已經存在相同的“Name”和“Author”的數據,于是不進行插入,而命令將轉換為Update。

因此,當你執行以下語句時:

  1. view sourceprint?01REPLACE INTO tbl_book  
  2.  (  
  3.  Name ,  
  4.  Author ,  
  5.  PublishDate ,  
  6.  pagecount ,  
  7.  Memo  
  8.  )  
  9. VALUES 
  10.  (  
  11.  'WF高級程序設計' ,  
  12.  'Bruce Bukovics' ,  
  13.  date( ) ,  
  14.  500 , -- 頁碼總數改變  
  15.  'Test2' -- 備注改變  
  16.  ) ; 

執行結果:

 

頁碼和備注都改變了,說明這里執行了Update。

然后我修改Name名稱:

  1. view sourceprint?01REPLACE INTO tbl_book  
  2.  (  
  3.  Name ,  
  4.  Author ,  
  5.  PublishDate ,  
  6.  pagecount ,  
  7.  Memo  
  8.  )  
  9. VALUES 
  10.  (  
  11.  'WPF揭秘' , -- 書名改變  
  12.  'Bruce Bukovics' ,  
  13.  date( ) ,  
  14.  500 ,  
  15.  'Test2' 
  16.  ) ; 

執行結果:

 

插入了一條圖書的記錄,同樣你也可以嘗試改變Author,同樣也是插入記錄。

這樣,您就可以通過在表中創建***索引并且利用Replace達到Insert OR Update的目的。

整體還是很簡單,這個是我在做嵌入式項目中的一點心得:)

(補充一下:在.NET中,插入或者更新日期字段的時候,會出現一些問題,這里你需要將傳值的日期格式通過ToString(“s”),來進行插入或更新)

原文鏈接:http://www.cnblogs.com/liping13599168/archive/2011/05/24/2054908.html

責任編輯:艾婧 來源: 博客園
相關推薦

2021-09-07 10:55:36

SQLitePythonRust

2011-08-11 14:35:47

SQL Server插入更新

2010-04-14 09:41:10

Oracle數據備份

2009-06-11 17:37:32

EJB注釋

2010-10-16 15:46:49

動態更新UIAndroid

2024-09-11 16:43:40

C#Word編程

2021-05-10 10:50:53

NginxIPLinux

2009-12-28 10:10:41

2011-08-10 09:12:44

SQL Server插入圖像存儲過程

2009-01-03 14:54:40

ibmdwXML

2024-09-20 18:02:42

C#數據庫SQLite

2011-08-04 18:00:47

SQLite數據庫批量數據

2019-04-29 11:14:25

MySQL存儲排序

2009-12-28 09:23:50

接入網技術

2010-09-09 15:32:48

SQL插入數據

2017-01-17 17:13:20

AndroidAspectJ開發

2021-11-11 15:19:33

物聯網數字化轉型系統

2021-11-10 15:18:16

JavaGo命令

2022-04-15 10:37:00

權限進程UAC

2023-09-26 08:11:22

Spring配置MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚欧性视频| 国产高清在线精品一区二区三区 | 久久精品视频99 | 国产91在线精品 | 午夜一区二区三区在线观看 | 久久亚洲欧美日韩精品专区 | 国产一区二区在线视频 | 在线国产一区二区 | 毛片区| 亚州成人| 久久6视频 | 欧美亚洲视频在线观看 | 最新中文字幕 | 久久蜜桃资源一区二区老牛 | 夜久久 | 久久国产高清视频 | 亚洲视频在线看 | 成人午夜精品 | 亚洲影视在线 | 久久久久国产 | 亚洲免费在线观看 | 久久久久一区二区三区 | 亚洲一区二区三区在线视频 | 久久精品亚洲精品国产欧美kt∨ | 亚洲精品2区 | 男女污污动态图 | 午夜免费视频 | 中文在线一区二区 | 日韩一级黄色毛片 | 国产精品视频在线播放 | 瑞克和莫蒂第五季在线观看 | 天天插天天狠天天透 | 国产精品一区在线观看 | 99re在线视频 | 国产在线观看一区二区三区 | 久久久久一区 | 九九久久国产 | 亚洲97| 亚洲免费一 | 午夜免费看视频 | 免费一级网站 |