資料庫訪問之Sqlite的不同之處

2021-09-22 13:22:11 字數 2387 閱讀 2326

在我的winform開發框架中,底層的資料訪問支援多種不同的資料庫,在資料庫訪問的開發過程中,發現sqlite多數情況下,操作都和sqlserver或者說是和標準sql差不多的。當然,sqlite本身也有一些特殊的語句支援,本文主要根據自己的了解,以及在支援的sqlite基類中的提煉,總結他們常用到的一些不同,以便以後查閱,並和大家分享討論。

在我的winform開發框架中,是支援sqlite等這樣的資料庫接入的,示例圖如下所示。 

現在根據我整理的一些特殊地方,和大家分享討論: 

1)特殊字元

每種資料庫,基本上在操作sql語句中,都有自己的一些特殊的分隔符號,如防止和關鍵字重名的特殊引用字元,sqlserver是, 這方面sqlite也沿用這個。引數化語句的佔位符,sqlserver和access是@,oracle是:,而sqlite則支援$和@。

2)獲取返回剛剛插入的主鍵字段值(自增長)

這種操作也是經常用到的,一般sqlserver是用select scope_identity() 語句操作,access用的是select @@identity,oracle由於用的是序列,所以是select seq_testtable.currval id from dual這樣的操作,sqlite呢,他也有自己的特殊語句了,就是:select last_insert_rowid() ,是不是比較容易記住呢。

3)limit語句使用

在sqlserver中,我們常用top語句來運算元據,以便獲取必要的記錄資訊,這個在sqlite不支援的,而它和mysql一樣,是使用limit語句來實現相同的效果,下面就是我winform開發框架中,獲取第一條記錄和最後一條記錄的基類方法,我在這裡分享一下。

//////

查詢記錄表中最舊的一條記錄

///

///

public

override t findfirst()

from  order by  asc limit 1

", selectedfields, tablename, getsafefilename(sortfield));

t entity = 

null;

database db = createdatabase();

dbcommand command = db.getsqlstringcommand(sql);

using (idatareader dr = db.executereader(command))

}

return entity;

}///

///查詢記錄表中最新的一條記錄

///

///

public

override t findlast()

from  order by  desc limit 1

", selectedfields, tablename, getsafefilename(sortfield));

t entity = 

null;

database db = createdatabase();

dbcommand command = db.getsqlstringcommand(sql);

using (idatareader dr = db.executereader(command))

}

return entity;

4、分頁實現

》,其實sqlite分頁邏輯也不神秘,無非也是利用limit語句實現所需要的記錄獲取,如下所示。

//////

不依賴於儲存過程的分頁(sqlite)

///

///如果isdocount為true,返回總數統計sql;否則返回分頁語句sql

///private

string getsqlitesql(

bool isdocount)

if (isdocount)

//執行總數統計

where  

",  this.strwhere);

}else

", this.fieldnametosort, 

this.isdescending ? 

"desc

" : 

"asc");

int minrow = pagesize * (pageindex - 

1);int maxrow = pagesize * pageindex;

sql = 

string.format(

"select  from  where   limit ,

",

fieldstoreturn, 

this.strwhere, strorder, minrow, maxrow);

}return sql;

Qt資料庫之訪問 SQLite

sqlite 是乙個開源的嵌入式關聯式資料庫,實現自包容 零配置 支援事務的sql資料庫引擎。其特點是高度便攜 使用方便 結構緊湊 高效 可靠。整個資料庫 定義 表 索引和資料本身 都在宿主主機上儲存在乙個單一的檔案中。sqlite 支援跨平台,同乙個 sqlite 的資料庫檔案,可以在 windo...

C 訪問SQLite資料庫

a.解壓後copy c sqlite 3 5 0 b.進入cmd模式,進入sqlite 3 5 0目錄,執行sqlite3 mytest.db c.create table mytable1 seq int,desc varchar 8 insert into mytable1 values 1,p...

android訪問sqlite資料庫

在 android 中可以使用 eclipse 外掛程式ddms 來檢視,也可以使用 android 工具包中的 adb工具來檢視。android 專案中的 sqlite 資料庫位於 data data 專案包 databases中。1 首先開啟 android 專案的除錯模式,然後找到顯示 ddm...