日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# SQLite 数据库操作语句与文件视图管理器

發(fā)布時間:2023/12/18 C# 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# SQLite 数据库操作语句与文件视图管理器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

//sqlite數(shù)據(jù)庫視圖管理器

SQLiteSpy是一款專業(yè)的SQLite數(shù)據(jù)庫管理,主要用于讀取sqlite數(shù)據(jù)庫,建立新的SQL查詢,視圖,復制和刪除表、編輯單元格,以及查看索引,觸發(fā)器和排序規(guī)則。從而讓用戶更容易探討、分析和操縱sqlite3的數(shù)據(jù)庫。

SQLiteSpy不會對系統(tǒng)性能造成壓力,因為它運行在非常少的CPU和RAM上。它具有良好的響應時間和工作正常,而不會導致操作系統(tǒng)掛起,崩潰或彈出錯誤對話框。總而言之,SQLiteSpy提供了一個查看和執(zhí)行SQL查詢的簡單解決方案。

SQLiteSpy中文版功能

1、數(shù)據(jù)庫一覽:

樹狀顯示所有的架構,包括表,列,索引和觸發(fā)器在數(shù)據(jù)庫中包含的項目,按F5更新架構樹,雙擊一個表或視圖來顯示它的數(shù)據(jù),使用常用的命令的上下文菜單

2、網(wǎng)格單元格編輯:

表格單元格中編輯,顯示一個表通過樹狀架構,選擇一個單元格,然后按F2鍵調用編輯器,然后修改并確認您的更改寫回到表里

3、數(shù)據(jù)類型顯示:

本機的SQL數(shù)據(jù)類型顯示不同的背景顏色來幫助檢測類型錯誤,類型錯誤可能會導致性能下降或錯誤的SELECT結果集,防止NULL值與空字符串混淆

4、完全的Unicode:

SQLiteSpy具有完全支持SQLite的Unicode的能力,數(shù)據(jù)顯示和輸入是完全實現(xiàn)為Unicode,包括SQL命令

5、多個SQL編輯:

現(xiàn)代標簽是用來編輯和顯示的查詢語句和結果比較容易多個SQL查詢,SQL查詢執(zhí)行輸入或加載到SQL他們編輯,然后按F9鍵運行該查詢,或Ctrl + F9來運行當前行或選擇值

6、時間測量:

SQL執(zhí)行的時間會自動測量和顯示,以幫助優(yōu)化查詢

7、正則表達式:

在SQL關鍵字regexp是支持,并增加了完整的Perl的正則表達式語法5.10 SQLiteSpy的實施,實現(xiàn)了利用DIRegEx庫

8、數(shù)學SQL函數(shù):

下面的SQL函數(shù)可用數(shù)學除了SQLite的默認:ACOS(), ASIN(), ATAN(), ATAN(), ATAN2(), CEIL(), CEILING(), COS(), COT(), DEGREES(), EXP(), FLOOR(), LN(), LOG(), LOG(), LOG2(), LOG10(), MOD(), PI(), POW(), RADIANS(), SIGN(), SIN(), SQRT(), TAN(), TRUNCATE()

9、數(shù)據(jù)壓縮:

壓縮的SQL函數(shù)()適用的zlib的緊縮到任何文本或BLOB值

10、緊湊型結果儲存:

使用內部數(shù)據(jù)存儲機制,以達到最佳的兼容SQLite的原生數(shù)據(jù)類型,因此,SQLiteSpy使用遠低于其它的SQLite管理內存和更有效地處理大量的表

11、內建的SQLite引擎:

SQLiteSpy已建成一個單一的應用程序文件與SQLite數(shù)據(jù)庫引擎可執(zhí)行文件,不需要部署任何DLL文件,這使得SQLiteSpy更易于部署

12、加密支持:

SQLiteSpy可以閱讀和修改加密的數(shù)據(jù)庫文件由DISQLite3產(chǎn)生,DISQLite3實現(xiàn)了自己的母語AES加密,這為不符合商業(yè)SQLite的加密擴展(SSE)的或任何其他第三方的實施提供兼容

13、易安裝和卸載:

要運行SQLiteSpy,只需解壓SQLiteSpy.exe文件到任何目錄和執(zhí)行文件,不需要安裝,剛開始時,該程序創(chuàng)建一個文件SQLiteSpy.db3(1 sqlite3的數(shù)據(jù)庫)來存儲的和設置,它不寫任何其他文件或注冊表;

卸載一樣只是簡單的刪除兩個文件:應用程序的可執(zhí)行文件和數(shù)據(jù)庫文件即可

更新日志

SQLiteSpy v1.9.11更新

1、升級內置DISQLite3引擎到SQLite 3.13.0

2、新增JSON(基于JavaScript語言的輕量級數(shù)據(jù)交換格式)擴展選項

例如:SELECT json_extract('{“a”:2,“c”:[4,5,{“f”:7}]}', '$.c[2].f');

3、新增Session擴展

例如:SELECT * FROM generate_series(0,100,5);

?

//sqlite語句設計

?

C# SQLite?數(shù)據(jù)庫操作學習

運行環(huán)境:Window7 64bit,.NetFramework4.61,C# 7.0


參考:

  • SQLite 官網(wǎng)
  • SQL As Understood By SQLite
  • System.Data.SQLite
  • 菜鳥教程
  • SQL 教程

章節(jié):

  • 1、下載安裝
  • 2、數(shù)據(jù)類型
  • 3、創(chuàng)建數(shù)據(jù)庫
  • 4、刪除數(shù)據(jù)庫
  • 5、創(chuàng)建表
  • 6、刪除表
  • 7、查詢表結構
  • 8、更改表名
  • 9、增加列(字段)
  • 10、讀取創(chuàng)建表的 SQL 語句
  • 11、更改列名
  • 12、刪除列
  • 13、插入數(shù)據(jù)
  • 14、替換數(shù)據(jù)
  • 15、更新數(shù)據(jù)
  • 16、刪除數(shù)據(jù)
  • 17、查詢數(shù)據(jù)
  • 18、獲取查詢數(shù)據(jù)的行數(shù)(多少條記錄)
  • 19、事務 Transaction
  • 20、整理數(shù)據(jù)庫

正文:

一、下載安裝

這段時間在學習 C# 編程中,想寫一個簡單的進銷存程序,就想到了用數(shù)據(jù)庫,需要一個簡單便攜的桌面數(shù)據(jù)庫,想自己寫個,功力太淺,可以做為以后練手學習的項目。原來會用的 Foxpro 已經(jīng)被微軟不知丟在哪個旮旯了,在網(wǎng)上找了一下,發(fā)現(xiàn)只有 Access 和 Sqlite 可選,看了很多對比,決定還是學習使用 Sqlite。

在?System.Data.SQLite 官網(wǎng)的 download 中的 Setups for 64-bit Windows (.NET Framework 4.6)?sqlite-netFx46-setup-x64-2015-1.0.104.0.exe (17.99 MiB)?下載然后運行安裝。
更簡單的做法是在 Visual Studio 2017 的 NuGet 中,輸入:install-package system.data.sqlite.x64。

sqlite數(shù)據(jù)庫的可視化工具中,?SqliteExpert?不錯,下載?SQLite Expert Personal 4.x?。

工具備齊了,由于知道上面這個System data Sqlite 是用 C# 封裝好的,下來我們打開Visual Studio 2017,新開個工程,在菜單“項目”→“添加引用”→“瀏覽”?中,去 Sqlite 的安裝目錄下選擇 System.Data.SQLite.dll,才305k的鏈接庫。引用了后,在VS右上角的“解決方案資源管理器”中看看引用下的 System.Data.SQlite 的引用屬性中的“復制到本地”?是不是 true,不是的話弄成 true。在工程中開頭添加 using 語句:

using?System.Data.SQLite;

網(wǎng)上很多教程到這就ok了,但在我實際操作中,發(fā)現(xiàn)還要把?SQLite.Interop.dll?也拷貝到當前程序運行目錄下(不能引用,只能直接拷貝),不知道是不是新版本的要求。

(ps:在 sqlite 的安裝目錄下有很詳細的幫助文檔 SQLite.NET.chm)

二、數(shù)據(jù)類型

儲存的數(shù)據(jù)類型有以下5種:

存儲類描述
NULL一個NULL值
INTERGER帶符號的整數(shù),根據(jù)值的大小,自動存儲為1,2,3,4,5,8字節(jié)6種
REAL浮點數(shù),存儲為IEEE 8byte浮點數(shù)
TEXT文本字符串,缺省的編碼為utf-8
BLOGblob數(shù)據(jù),不定長

注意了,SQLite 的存儲寬度是根據(jù)輸入來自動調整的,這點和原來我用過的 foxpro 不一樣,比如就算你在 create 數(shù)據(jù)表中設定了一個字段 varchar(4) 4byte寬的字符串,但你輸入了“hello”5個寬度的字符串時,它并不會截取成“hell”,而是完整地存儲為“hello”。數(shù)字類型也是如此。

還有更有趣的是,它有個Type Affinity 功能,比如如下:

CREATE TABLE t1(a INT, b VARCHAR(10));
INSERT INTO t1(a,b) VALUES('123',456);

它會運用 Type Affinity 功能自動正確地把 "123" 轉換成數(shù)字,把 456轉化成“456”字符串。這個Type Affinity 請參考安裝目錄下的 幫助文件或?SQLite 親和(Affinity)類型。

三、創(chuàng)建數(shù)據(jù)庫

SQLite 是文件型的數(shù)據(jù)庫,創(chuàng)建很簡單,直接指定一個數(shù)據(jù)庫文件名,后綴名不一定非得是“.sqlite”,后綴隨便命名為".db"也成。運行 SQLiteConnection.open 就會創(chuàng)建個空的指定名字的數(shù)據(jù)庫文件。由于它是文件型的,我們也可以直接用 System.IO.File.Create() 來創(chuàng)建一個空的文件。

using?System.Data.SQLite;
//---創(chuàng)建數(shù)據(jù)庫
static?void?CreateDB()
{
????string?path = @"d:\test\123.sqlite";
????SQLiteConnection cn =?new?SQLiteConnection("data source=" + path);
????cn.Open();
????cn.Close();
}
?

四、刪除數(shù)據(jù)庫

sqlite 命令中好像沒有提供刪除整個數(shù)據(jù)庫的命令,但是由于它是個文件型的,我們直接用 System.IO.File.Delete(string path) 方法來刪除文件。

//---刪除數(shù)據(jù)庫
static?void?DeleteDB()
{
????string?path = @"d:\test\123.sqlite";
????if?(System.IO.File.Exists(path))
????{
????????System.IO.File.Delete(path);
????}
}
?

五、創(chuàng)建表

開始要用到 SQL 命令了。建立一個表的順序如下步驟(也可以用可視化工具 SQLiteExpert 來創(chuàng)建):
1、建立數(shù)據(jù)庫連接;
2、打開數(shù)據(jù)庫(如果沒有數(shù)據(jù)庫,Open 也會新創(chuàng)建一個數(shù)據(jù)庫);
3、聲明一個 SQLiteCommand 類,主要用來放置和運行 SQL 命令的;
4、把 SQLiteCommand 的 Connection 和 SQLiteConnection 聯(lián)系起來(切記,經(jīng)常忘^_^!);
5、往 SQLiteCommand 的 CommandText 輸入 SQL 語句 CREATE TABLE 語句,具體請參考 安裝目錄下的 SQLite.NET.chm 或?SQLite 創(chuàng)建表;
6、調用 SQLiteCommand.ExcuteNonQuery() 方法運行。

//---添加表
static?void?CreateTable()
{
????string?path = @"d:\test\123.sqlite";
????SQLiteConnection cn =?new?SQLiteConnection("data source="+path);
????if?(cn.State!= System.Data.ConnectionState.Open)
????{
????????cn.Open();
????????SQLiteCommand cmd =?new?SQLiteCommand();
????????cmd.Connection = cn;
????????cmd.CommandText = "CREATE TABLE t1(id varchar(4),score?int)";
????????//cmd.CommandText = "CREATE TABLE IF NOT EXISTS t1(id varchar(4),score int)";
????????cmd.ExecuteNonQuery();
????}
????cn.Close();
}

注意上面那句被注釋掉的 CREATE TABEL IF NOT EXISTS ,一般情況下用這句比較好,如果原來就有同名的表,沒有這句就會出錯。SQL 語句其實也不用全部大寫,全部大寫是 SQL 語句約定俗成的(令我想起讀書的時候學的 COBOL),全部小寫也不會出錯。

六、刪除表

和建立表的步驟一樣,只是把 SQL 語句改了而已。

//---刪除表
static?void?DeleteTable()
{
????string?path = @"d:\test\123.sqlite";
????SQLiteConnection cn =?new?SQLiteConnection("data source=" + path);
????if?(cn.State != System.Data.ConnectionState.Open)
????{
????????cn.Open();
????????SQLiteCommand cmd =?new?SQLiteCommand();
????????cmd.Connection = cn;
????????cmd.CommandText =?"DROP TABLE IF EXISTS t1";
????????cmd.ExecuteNonQuery();
????}
????cn.Close();
}
?

七、查詢表結構

需要用到 SQLite 特殊的 PRAGMA 命令, 具體參見?PRAGMA Statements
PRAGMA table_info(tablename)?,tablename 用或不用單引號 ' ' 括起來都一樣。
SQliteDataReader 讀出來的數(shù)據(jù)順序代表:

下標名稱描述
0cid序號
1name名字
2type數(shù)據(jù)類型
3notnull能否null值,0不能,1 能
4dflt_value缺省值
5pk是否主鍵primary key,0否,1是

string?path = @"d:\test\123.sqlite";
SQLiteConnection cn =?new?SQLiteConnection("data source=" + path);
cn.Open();
SQLiteCommand cmd = cn.CreateCommand();

cmd.CommandText= "PRAGMA table_info('t1')";

//寫法一:用DataAdapter和DataTable類,記得要 using System.Data
SQLiteDataAdapter adapter =?new?SQLiteDataAdapter(cmd);
DataTable table =?new?DataTable();
adapter.Fill(table);
foreach(DataRow r?in?table.Rows)
{
????Console.WriteLine($"{r["cid"]},{r["name"]},{r["type"]},{r["notnull"]},{r["dflt_value"]},{r["pk"]} ");
}
Console.WriteLine();

//寫法二:用DataReader,這個效率高些
SQLiteDataReader reader = cmd.ExecuteReader();
while?(reader.Read())
{
????for(int?i = 0; i < reader.FieldCount; i++)
????{
????????Console.Write($"{reader[i]},");
????}
????Console.WriteLine();
}
reader.Close();
?

如果不止一個表,要遍歷所有表的結構如下,就要用到 SQLite 中的特殊表 sqlite_master,它的結構如下:
參考:
2.6. Storage Of The SQL Database Schema
CREATE TABLE sqlite_master(
type text,
name text,
tbl_name text,
rootpage integer,
sql text
);
當 type = table 時,name 和 tbl_name 是一樣的,其他比如 type =index 、view 之類時,tbl_name 才是表名。

//---遍歷查詢表結構
static?void?QueryAllTableInfo()
{
????string?path = @"d:\test\123.sqlite";
????SQLiteConnection cn =?new?SQLiteConnection("data source=" + path);
????if?(cn.State != System.Data.ConnectionState.Open)
????{
????????cn.Open();
????????SQLiteCommand cmd =?new?SQLiteCommand();
????????cmd.Connection = cn;
????????cmd.CommandText = "SELECT name FROM sqlite_master WHERE TYPE='table' ";
????????SQLiteDataReader sr = cmd.ExecuteReader();
????????List<string> tables =?new?List<string>();
????????while?(sr.Read())
????????{
????????????tables.Add(sr.GetString(0));
????????}
????????//datareader 必須要先關閉,否則 commandText 不能賦值
????????sr.Close();
????????foreach?(var?a?in?tables)
????????{
????????????cmd.CommandText = $"PRAGMA TABLE_INFO({a})";
????????????sr = cmd.ExecuteReader();
????????????while?(sr.Read())
????????????{
????????????????Console.WriteLine($"{sr[0]} {sr[1]} {sr[2]} {sr[3]}");
????????????}
????????????sr.Close();
????????}
????}
????cn.Close();
}
?

八、更改表名

用 SQL 語句 ALTER TABLE 把 t1 表名改成 t3:

cmd.CommandText =?"ALTER TABLE t1 RENAME TO t3";
cmd.ExecuteNonQuery();

注意,表名是不分大小寫的,也不用加單引號括起來。

九、增添列(字段)

還是用 SQL 命令 ALTER TABLE ,下例中為 t1 表添加一個名為 age,數(shù)據(jù)類型為 int 的新列:

cmd.CommandText =?"ALTER TABLE t1 ADD COLUMN age int";
cmd.ExecuteNonQuery();

十、讀取創(chuàng)建表的 SQL 語句

讀取創(chuàng)建表時的 SQL 語句,在 SqliteExpert 中的 DDL 可以查看到。讀取這個是為下面增添刪除列做準備。

cmd.CommandText =?"SELECT sql FROM sqlite_master WHERE TYPE='table'";
SQLiteDataReader sr = cmd.ExecuteReader();
while?(sr.Read())
{
????Console.WriteLine(sr[0].ToString());
}
sr.Close();
?

十一、更改列名

SQLite 中并沒有提供直接更改列名與刪除列的命令,有兩種方式,
第一種是:
1、把目標表改名;
2、創(chuàng)建一個帶有新列名的新表;
3、把舊表數(shù)據(jù)拷貝至新表(記得要 Connection.BeginTransaction())。

第二種是更改 sqlite_master 里面的 schema,很容易損壞數(shù)據(jù)庫。
依據(jù)是 SQLite 每次連接時,其實都是依據(jù) schema 里面的每個表創(chuàng)建時的 CREATE TABLE 語句來動態(tài)建立 column 的信息的,只要 column 的數(shù)據(jù)類型和位置不變,更改 CREATE TABLE 語句就能更改 column 的信息。具體參考?How do I rename a column in a SQLite database table?。以下我們兩種方法都寫來看看。

方式一:

//---更改列名1
//總思路:把舊表更名,建個帶新列名的新表,拷貝數(shù)據(jù)
//params string[] 中:0 數(shù)據(jù)庫名,1 表名,2 舊列名 3 新列名
static?void?RenameColumn1(params?string[] str)
{
????SQLiteConnection cn =?new?SQLiteConnection("data source=" + str[0]);
????cn.Open();
????SQLiteCommand cmd =?new?SQLiteCommand();
????cmd.Connection = cn;
????
????//取得str[1]表名的表的建表SQL語句?
????cmd.CommandText = "SELECT name,sql FROM sqlite_master WHERE TYPE='table' ORDER BY name";
????SQLiteDataReader sr = cmd.ExecuteReader();

????string?_sql = "";?
????while?(sr.Read())
????{
????????if?(string.Compare(sr.GetString(0), str[1],?true) == 0)
????????{
????????????_sql = sr.GetString(1);
????????????break;
????????}
????}
????sr.Close();

????//更改舊表名為 帶 _old?
????string?_old = str[1] + "_old";
????cmd.CommandText = $"ALTER TABLE {str[1]} RENAME TO {_old}";
????cmd.ExecuteNonQuery();

????//建立新表,假設輸入的舊列名和表中的列名大小寫等完全一致,不寫能容錯的了
????_sql = _sql.Replace(str[2],str[3]);
????cmd.CommandText = _sql;
????cmd.ExecuteNonQuery();

????//拷貝數(shù)據(jù)
????using?(SQLiteTransaction tr = cn.BeginTransaction())
????{
????????cmd.CommandText = $"INSERT INTO {str[1]} SELECT * FROM {_old}";
????????cmd.ExecuteNonQuery();
????????cmd.CommandText = $"DROP TABLE {_old}";
????????cmd.ExecuteNonQuery();
????????tr.Commit();
????}
????cn.Close();
}
?

方式二:

//---更改列名2,改寫schema里建表時的sql語句
//原理:sqlite 每次打開的時候,都是依據(jù)建表時的sql語句來動態(tài)建立column的信息的
static?void?RenameColumn2(params?string[] str)
{
????SQLiteConnection cn =?new?SQLiteConnection("data source=" + str[0]);
????cn.Open();
????SQLiteCommand cmd =?new?SQLiteCommand();
????cmd.Connection = cn;

????//取得str[1]表名的表的建表SQL語句?
????cmd.CommandText = $"SELECT sql FROM sqlite_master WHERE TYPE='table' AND name='{str[1]}'";
????SQLiteDataReader sr = cmd.ExecuteReader();
????sr.Read();
????string?_sql = sr.GetString(0);
????sr.Close();
????//注意單引號 '
????_sql =$"UPDATE sqlite_master SET sql='{_sql.Replace(str[2],str[3])}' WHERE name= '{str[1]}' ";

????//設置 writable_schema 為 true,準備改寫schema?
????cmd.CommandText = "pragma writable_schema=1";
????cmd.ExecuteNonQuery();
????cmd.CommandText = _sql;
????cmd.ExecuteNonQuery();
????//設置 writable_schema 為 false。
????cmd.CommandText = "pragma writable_schema=0";
????cmd.ExecuteNonQuery();

????cn.Close();
}
?

十二、刪除列

SQLite 也沒有提供刪除列的命令。和上面一樣,也是兩種方式。
其一,把目標表改名,建立沒有要刪除列(字段)的新表,然后把舊表的數(shù)據(jù)拷貝至新表。
其二,直接修改 schema 中建表的 SQL 語句。
其中最主要的是要把建表的列的所有信息都保存下來,比如索引、缺省值之類的。下面示例使用第二種方式。

//---刪除列2,string[] ,0 數(shù)據(jù)庫路徑,1 表名,2 要刪除的列名
static?void?DeleteColumn2(params?string[] str)
{
????SQLiteConnection cn =?new?SQLiteConnection("data source=" + str[0]);
????cn.Open();
????SQLiteCommand cmd =?new?SQLiteCommand();
????cmd.Connection = cn;
????//取得str[1]表名的表的建表SQL語句?
????cmd.CommandText = $"SELECT sql FROM sqlite_master WHERE TYPE='table' AND name='{str[1]}'";
????SQLiteDataReader sr = cmd.ExecuteReader();
????sr.Read();
????string?_sql = sr.GetString(0);
????sr.Close();

????//取得列的定義
????//C#7.0的新特征,Tuple<>的語法糖,需要 NuGet install-package system.valuetuple
????List<(string?name,?string?define)> list = GetColumnDefine(_sql);
????//取得要刪除列的序號
????int?_index = list.IndexOf(list.Where(x => x.name == str[2]).First());
????//建立新的sql語句
????StringBuilder sb =?new?StringBuilder();
????sb.Append($"CREATE TABLE {str[1]}(");
????for?(int?i = 0; i < list.Count; i++)
????{
????????if?(i != _index)
????????{
????????????sb.Append($"{list[i].define},");
????????}
????}
????sb.Remove(sb.Length - 1, 1);
????sb.Append(")");
????//改寫schema
????_sql = $"UPDATE sqlite_master SET sql='{sb.ToString()}' WHERE name='{str[1]}'";
????//設置 writable_schema 為 true,準備改寫schema?
????cmd.CommandText = "pragma writable_schema=1";
????cmd.ExecuteNonQuery();
????cmd.CommandText = _sql;
????cmd.ExecuteNonQuery();
????//設置 writable_schema 為 false。
????cmd.CommandText = "pragma writable_schema=0";
????cmd.ExecuteNonQuery();

????cn.Close();
}
//---取得列的定義
static?List<(string,?string)> GetColumnDefine(string?SqlStr)
{
????int?n = 0;
????int?_start = 0;
????string?_columnStr = "";
????for?(int?i = 0; i < SqlStr.Length; i++)
????{
????????if?(SqlStr[i] == '(')
????????{
????????????if?(n++ == 0) { _start = i; }
????????}
????????else
????????{
????????????if?(SqlStr[i] == ')')
????????????{
????????????????if?(--n == 0)
????????????????{
????????????????????_columnStr = SqlStr.Substring(_start + 1, i - _start - 1);
????????????????????break;
????????????????}
????????????}

????????}
????}
????string[] ss = _columnStr.Split(new?char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
????//C#7.0的新特征,Tuple<>的語法糖,需要 NuGet install-package system.valuetuple
????List<(string?name,?string?define)> reslut =?new?List<(string?name,?string?define)>();
????foreach?(var?a?in?ss)
????{
????????string?s = a.Trim();
????????n = 0;
????????for?(int?i = 0; i < s.Length; i++)
????????{
????????????if?(s[i] == ' ')
????????????{
????????????????reslut.Add((s.Substring(0, i), s));
????????????????break;
????????????}
????????}
????}
????return?reslut;
}
?

十三、插入數(shù)據(jù)

插入數(shù)據(jù)主要是用 SQL 語句 INSERT INTO

示例1(簡單插入):

cmd.CommandText = "INSERT INTO t1 VALUES('99999',11)";
cmd.ExecuteNonQuery();
?

示例2(變量插入,要引用 System.Data):

using?System.Data;

string?s = "123456";
int?n = 10;
cmd.CommandText = "INSERT INTO t1(id,age) VALUES(@id,@age)";
cmd.Parameters.Add("id", DbType.String).Value = s;
cmd.Parameters.Add("age", DbType.Int32).Value = n;
cmd.ExecuteNonQuery();
?

十四、替換數(shù)據(jù)

SQL 命令 INSERT INTO。
下面示例中, t1 表中 id 為主鍵,相同主鍵值的就 UPDATE,否則就 INSERT

string?s = "123456";
int?n = 30;
cmd.CommandText = "REPLACE INTO t1(id,age) VALUES(@id,@age)";
cmd.Parameters.Add("id", DbType.String).Value = s;
cmd.Parameters.Add("age", DbType.Int32).Value = n;
cmd.ExecuteNonQuery();
?

十五、更新數(shù)據(jù)

SQL 命令 UPDATE tablename SET column1=value,column2=value... WHERE 條件

string?s = "333444";
int?n = 30;
cmd.CommandText = "UPDATE t1 SET id=@id,age=@age WHERE id='0123456789'";
cmd.Parameters.Add("id", DbType.String).Value = s;
cmd.Parameters.Add("age", DbType.Int32).Value = n;
cmd.ExecuteNonQuery();
?

十六、刪除數(shù)據(jù)

SQL 命令:DELETE FROM tablename WHERE 條件

cmd.CommandText = "DELETE FROM t1 WHERE id='99999'";
cmd.ExecuteNonQuery();
?

十七、查詢數(shù)據(jù)

SQL 命令:SELETE 語句,具體的請參考?SQL 教程。

//查詢第1條記錄,這個并不保險,rowid 并不是連續(xù)的,只是和當時插入有關
cmd.CommandText = "SELECT * FROM t1 WHERE rowid=1";
SQLiteDataReader sr = cmd.ExecuteReader();
while?(sr.Read())
{
????Console.WriteLine($"{sr.GetString(0)} {sr.GetInt32(1).ToString()}");
}
sr.Close();
//運行以下的就能知道 rowid 并不能代表 行數(shù)
cmd.CommandText = "SELECT rowid FROM t1 ";
sr = cmd.ExecuteReader();
while?(sr.Read())
{
????Console.WriteLine($"{sr.GetString(0)} {sr.GetInt32(1).ToString()}");
}
sr.Close();
?

十八、獲取查詢數(shù)據(jù)的行數(shù)(多少條記錄)

從上面示例中我們得知,rowid 并不是正確的行數(shù)(記錄數(shù)),而是 INSERT 的時候的B-Tree 的相關數(shù)。
如要知道表中的行數(shù)(記錄數(shù)),要如下:

cmd.CommandText = "SELECT count(*) FROM t1";
sr = cmd.ExecuteReader();
sr.Read();
Console.WriteLine(sr.GetInt32(0).ToString());
sr.Close();
?

十九、事務

事務就是對數(shù)據(jù)庫一組按邏輯順序操作的執(zhí)行單元。用事務的好處就是成熟的數(shù)據(jù)庫都對 密集型的磁盤 IO 操作之類進行優(yōu)化,而且還能進行撤回回滾操作。其實在上面改變列名的示例中就用過。

//---事務
static?void?TransActionOperate(SQLiteConnection cn,SQLiteCommand cmd)
{
????using?(SQLiteTransaction tr = cn.BeginTransaction())?
????{
????????string?s = "";
????????int?n = 0;
????????cmd.CommandText = "INSERT INTO t2(id,score) VALUES(@id,@score)";
????????cmd.Parameters.Add("id", DbType.String);
????????cmd.Parameters.Add("score", DbType.Int32);
????????for?(int?i = 0; i < 10; i++)
????????{
????????????s = i.ToString();
????????????n = i;
????????????cmd.Parameters[0].Value = s;
????????????cmd.Parameters[1].Value = n;
????????????cmd.ExecuteNonQuery();
????????}
????????tr.Commit();
????}
}

?

二十、整理數(shù)據(jù)庫

SQLite 的自帶命令 VACUUM。用來重新整理整個數(shù)據(jù)庫達到緊湊之用,比如把刪除的徹底刪掉等等。

cmd.CommandText = "VACUUM";
cmd.ExecuteNonQuery();
?


到這里 SQLite 數(shù)據(jù)庫基本上能操作了,至于那些用 linq 操作等的需要安裝 ORM 的,我想了一下,下次再學習吧。對于我的小項目來說,帶著兩個加起來不到 1.5M的 dll ,還是很簡練的。
SQLite 也是數(shù)據(jù)庫,主要的還是各種 SQL 語句的調用,著眼于 SQL 語句的學習是下段時間我折騰的目標。
看到滿大街的 SQLiteHelper ,我想了下,就我這水平就不班門弄斧了,即使我也會偷偷寫個,方便調用。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的C# SQLite 数据库操作语句与文件视图管理器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲日本一区二区在线 | 亚洲黄色在线免费观看 | 99精品视频免费看 | 国产精品免费不卡 | 日韩在线观看视频网站 | 免费看国产曰批40分钟 | 国产一级大片免费看 | 国产精品一区二区在线播放 | 久久久久亚洲精品成人网小说 | 欧美成人精品三级在线观看播放 | 国产亚洲精品久久久久久久久久 | 99999精品| 日韩视频免费看 | 精久久久久 | 亚洲精品视频在线观看免费视频 | 日日夜夜网站 | 色综合五月 | 久久久影院一区二区三区 | 亚洲成人av片在线观看 | 中文字幕刺激在线 | 96久久欧美麻豆网站 | 九九视频热 | 日韩乱码中文字幕 | 午夜美女福利 | 激情喷水 | 精品国产aⅴ一区二区三区 在线直播av | 国产成人免费网站 | 国产99久久九九精品免费 | 久久久亚洲精品 | 波多野结衣动态图 | 超碰97国产精品人人cao | 亚洲四虎在线 | 一区二区三区精品久久久 | 久久免费精品国产 | 91网免费观看 | 日韩有码第一页 | 色九色 | 国产精品久久久久久久久毛片 | 伊人久久五月天 | 午夜999 | 黄色美女免费网站 | 成人午夜影院在线观看 | av网站在线观看免费 | 国产欧美三级 | 国产视频久久久久 | 天天做夜夜做 | 国产码电影 | 国产精品久久久久久久久毛片 | 精品国产aⅴ一区二区三区 在线直播av | 日韩精品1区2区 | 日韩精品欧美一区 | 69久久久 | 国产蜜臀av | www.com在线观看| 亚洲小视频在线观看 | 日三级在线 | 欧美大香线蕉线伊人久久 | 亚洲不卡av一区二区三区 | 精品视频久久 | 天天激情天天干 | 日日麻批40分钟视频免费观看 | 丁香激情五月婷婷 | 天天翘av | 国产精品一区二区白浆 | av丝袜制服| 国产经典av| 免费麻豆视频 | 在线免费观看黄色av | 狠狠色丁香婷婷综合久久片 | 国产特级毛片aaaaaa | 伊人中文字幕在线 | 在线免费视频 你懂得 | 国产午夜亚洲精品 | 久久精品三级 | 亚洲精品国产高清 | 在线播放亚洲激情 | www.久久com | 日韩欧美精品一区二区三区经典 | 国产综合香蕉五月婷在线 | 五月天综合激情 | 天天爽天天搞 | 欧美激情精品久久 | 国产99在线免费 | 99久久精品午夜一区二区小说 | 成人黄色电影在线播放 | 欧美日韩在线观看一区二区三区 | 国产香蕉久久精品综合网 | 成片免费观看视频 | 超碰在线国产 | 在线免费观看国产精品 | 在线观看中文字幕一区二区 | 在线电影a| 91精品国产一区二区三区 | 日韩电影中文字幕在线观看 | 亚洲久草在线视频 | 久久国内视频 | 麻豆mv在线观看 | 国产黄色精品在线观看 | 青青草国产精品视频 | 久操97| 91x色| 999在线观看视频 | 在线视频 区 | 99久久婷婷国产一区二区三区 | 狠狠躁日日躁狂躁夜夜躁 | 国产成人精品一区二区三区 | 日韩免费av片 | av综合站 | 免费色视频网站 | 亚洲高清久久久 | 日本久久久影视 | 狠狠干网 | 一区二区三区在线不卡 | 免费看久久久 | 国产精品一区二区果冻传媒 | 成人免费一级片 | 人人插人人费 | 色之综合网 | 精品国产乱码一区二区三区在线 | 91影视成人| 国产精品免费在线 | 日韩特黄一级欧美毛片特黄 | 久精品在线 | 精品亚洲一区二区三区 | 一级成人免费 | 国产精品字幕 | 一区二区三区高清在线观看 | 精品国产一区二区三区不卡 | 天天操天天添天天吹 | 婷婷伊人五月 | 在线观看电影av | 奇米影视777四色米奇影院 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 天天射天天射天天射 | 97人人模人人爽人人喊中文字 | 91在线精品一区二区 | 91最新地址永久入口 | 亚洲精品在线电影 | 国产成人精品一区二区三区网站观看 | 国产精品久久久网站 | 日韩网站视频 | 麻豆国产网站入口 | 在线欧美小视频 | 久久精品精品电影网 | 亚洲视屏在线播放 | 国产成人61精品免费看片 | 亚洲国产一区在线观看 | 狠狠88综合久久久久综合网 | 国产成本人视频在线观看 | 在线看污网站 | 91超碰免费在线 | 在线看福利av | 日本少妇视频 | 国产精品久久久久9999吃药 | 国产精品男女视频 | 夜夜躁日日躁狠狠久久88av | 国产精品高清在线观看 | 亚洲一级影院 | 国产高清视频免费在线观看 | 亚洲禁18久人片 | 久久精品亚洲国产 | 久久久电影网站 | 日韩免费中文字幕 | 日韩综合第一页 | 中文字幕在线影视资源 | 九九九视频精品 | 中文字幕视频网 | 久久精品三| 在线观看国产 | 亚洲精品婷婷 | 日本不卡一区二区三区在线观看 | 91在线在线观看 | 国产一区二区不卡视频 | 久久综合之合合综合久久 | 亚洲国产日韩精品 | 在线草| 日日夜夜人人天天 | 超碰在线99| 香蕉免费在线 | 国产护士hd高朝护士1 | 欧美精品xxx | 国产美腿白丝袜足在线av | 中文字幕一区在线观看视频 | www最近高清中文国语在线观看 | 免费黄a | 美女视频一区二区 | 国产精品一区二区在线观看免费 | 色播五月激情五月 | 国产一及片 | 成人免费在线观看电影 | 久久久在线免费观看 | www视频免费在线观看 | 免费看的黄色片 | 午夜电影 电影 | 国产 在线观看 | a在线免费观看视频 | 亚洲h视频在线 | 亚洲免费专区 | 美女视频黄是免费的 | 中文字幕在线久一本久 | 国产精品亚洲成人 | 91精品国产成人 | 黄色毛片视频免费 | 国产高清视频在线免费观看 | 婷婷去俺也去六月色 | 91在线免费视频观看 | 欧美精品中文字幕亚洲专区 | 黄色三级网站 | 美女免费视频观看网站 | 日本三级在线观看中文字 | 日韩久久激情 | 国产在线a不卡 | 欧美极品xxxxx| 99国产精品一区 | 免费看的黄网站 | 高清av中文在线字幕观看1 | 91视频高清完整版 | 日韩免费一级电影 | 中文字幕亚洲精品日韩 | 成人免费观看av | 激情五月色播五月 | 欧美日韩在线视频观看 | 99国产情侣在线播放 | 婷五月天激情 | 在线看中文字幕 | 91在线看视频免费 | 国产精品久久久久久久久大全 | 国产伦精品一区二区三区无广告 | av在线电影播放 | 中文字幕av电影下载 | 一区二区三区免费播放 | 亚洲理论片在线观看 | 久久99久久99免费视频 | 少妇搡bbb | 国产在线观看99 | 天天干天天做 | 中文在线免费视频 | 麻豆传媒视频在线 | 在线黄网站 | 国产又黄又硬又爽 | 9在线观看免费高清完整版在线观看明 | 99久久精品无免国产免费 | 国偷自产中文字幕亚洲手机在线 | 国产精品国产三级国产aⅴ9色 | 欧美最猛性xxxxx免费 | 国产大尺度视频 | 香蕉影院在线观看 | 日韩啪啪小视频 | 99久热在线精品视频观看 | 午夜 免费 | 久久精品国产一区二区 | 97综合在线 | 精品国产诱惑 | 高清美女视频 | 99热这里精品 | 香蕉视频亚洲 | 国产va饥渴难耐女保洁员在线观看 | 日韩在线高清 | 婷婷天天色 | 四虎影视www| 麻豆高清免费国产一区 | 色狠狠操 | 国产日韩欧美在线播放 | 热久久免费视频精品 | 在线观看电影av | 国产自产高清不卡 | 黄av免费在线观看 | 国产精品久久久久久久av大片 | 1024手机在线看 | 亚洲少妇激情 | av在线播放国产 | 成人在线免费小视频 | 久草在线国产 | 黄色av高清 | 欧美肥妇free | 国产中文欧美日韩在线 | 国产成人一区二区三区在线观看 | 久久99亚洲网美利坚合众国 | 国产专区日韩专区 | 国产精品系列在线观看 | 欧美日韩精品在线免费观看 | 成人午夜电影网站 | 香蕉久久久久久av成人 | 国产色资源 | 婷婷在线不卡 | 黄色在线观看污 | 婷婷丁香社区 | 国产又粗又猛又色 | 亚洲va综合va国产va中文 | 婷婷视频在线观看 | 国产首页 | 99爱精品视频 | 国产色道| 成人超碰97 | 蜜桃传媒一区二区 | 日本久久中文 | 色视频在线免费观看 | 奇米网8888| 日韩视频一区二区 | 日韩午夜在线观看 | 激情综合网五月婷婷 | 欧美一区二区视频97 | 成人小电影在线看 | 亚洲天堂网站视频 | 亚洲天堂精品 | 福利区在线观看 | 色婷婷啪啪免费在线电影观看 | 一区二区三区精品在线视频 | 91人人人| 欧美一级免费黄色片 | 日韩伦理片hd | 天天av在线播放 | 色综合网在线 | 日韩av不卡在线 | 在线看的av网站 | 丰满少妇对白在线偷拍 | 黄毛片在线观看 | 99re8这里有精品热视频免费 | 久久99在线视频 | 美女网站在线观看 | 亚洲视频高清 | 国产精品乱码久久久久久1区2区 | 超碰精品在线观看 | av网站地址 | 99精品视频在线看 | 在线观看免费国产小视频 | 久久在线免费观看视频 | 国产视频1区2区 | 国产亚洲观看 | 国产精品亚洲人在线观看 | 一区二区三区精品在线视频 | 久草视频在线免费播放 | 亚洲专区在线视频 | 亚洲国产中文字幕在线观看 | 超碰97国产精品人人cao | 国产视频一区二区在线播放 | 日韩啪啪小视频 | 久久久久久久久电影 | 日本中文字幕在线观看 | 欧美a视频在线观看 | 91九色蝌蚪| av三级在线免费观看 | 亚洲 欧美日韩 国产 中文 | 91看片淫黄大片在线播放 | 国产网红在线观看 | 美女av免费看 | 久草在线视频首页 | 2019天天干天天色 | 国产黄色av影视 | 日韩精品一区二区三区免费视频观看 | 精品视频免费观看 | 国内精品美女在线观看 | 久久精品激情 | 97成人超碰 | 国产精品18久久久久久久 | 1024手机基地在线观看 | 激情影院在线观看 | av在线影视| 国产综合福利在线 | 91久久国产精品 | 国产午夜激情视频 | 精品国产乱码久久久久久1区二区 | 超碰人人超 | 91一区二区三区久久久久国产乱 | 国产精品久久久久久久久婷婷 | 国产做a爱一级久久 | 国产在线观看二区 | 国产中文字幕视频在线观看 | 日日操日日干 | 国产最新视频在线 | 综合久久久久 | 久久久久久久综合色一本 | 又大又硬又黄又爽视频在线观看 | 在线免费观看羞羞视频 | 国产精品免费高清 | 超碰在线最新地址 | 97超碰在线视| 日日夜夜精品免费 | 91免费视频黄 | 婷婷在线不卡 | 国产精品va | www色| 国产精品视频地址 | 91福利视频免费 | 婷婷久久丁香 | 久久综合九色综合欧美狠狠 | 成人a视频片观看免费 | www.黄色在线 | 天天干,夜夜爽 | 国产午夜av | 日韩精品一区二 | 黄色三级网站在线观看 | 成人一区二区三区在线观看 | www亚洲视频 | 视频在线观看91 | 久草视频在线免费看 | 玖玖爱在线观看 | 日本字幕网| www·22com天天操 | 99精品一级欧美片免费播放 | 日日摸日日添日日躁av | 99国产在线视频 | 婷婷天天色 | 黄色aaa毛片 | 精品国产乱码久久久久久1区2匹 | 国产理论在线 | 五月婷婷一级片 | 又黄又爽又刺激的视频 | 国产精品永久 | 成人午夜片av在线看 | 亚洲天堂香蕉 | 国产亚洲欧美日韩高清 | 欧美五月婷婷 | 中文av影院| 国产人成在线视频 | 亚洲日韩中文字幕在线播放 | 国产一级大片免费看 | 国产精品一区二区免费视频 | 国产一区视频在线观看免费 | 天天射成人 | 久久视频国产 | 国产精品一区免费看8c0m | 一级淫片在线观看 | 亚洲综合网站在线观看 | 操操综合 | 国产黄色片免费 | 色94色欧美 | 欧美一级特黄高清视频 | 色网站在线观看 | a在线免费观看视频 | 岛国av在线 | 色婷婷亚洲精品 | 蜜臀av性久久久久蜜臀av | 成人a级免费视频 | 日日干夜夜爱 | 亚洲激情 欧美激情 | 亚洲性少妇性猛交wwww乱大交 | 久久国产精品二国产精品中国洋人 | 一区二区视频欧美 | 久久大片 | 国产91亚洲| 91九色国产 | 97av免费视频 | 91av视频免费在线观看 | 国产在线国偷精品产拍免费yy | 2022久久国产露脸精品国产 | 亚洲精品一区二区三区高潮 | 国产免费av一区二区三区 | 五月天伊人 | 手机在线欧美 | 69精品视频在线观看 | 久久人人爽人人爽人人 | 美女福利视频 | 深爱激情五月网 | 亚洲精品视频在线观看网站 | 国产成人综合在线观看 | 国产一区二区不卡在线 | 一区二区三区污 | 91污视频在线观看 | 亚洲三级黄 | 人人射人人爱 | 韩国一区二区三区在线观看 | 成人中文字幕在线观看 | 狠狠操狠狠操 | 99精品乱码国产在线观看 | 中文字幕在线观看视频免费 | 色婷婷免费视频 | 日日爱夜夜爱 | 九九热精 | 成人国产精品久久久久久亚洲 | 日韩欧美成人网 | 天天干天天拍天天操 | www最近高清中文国语在线观看 | 久久国产精品99久久人人澡 | 亚洲国产丝袜在线观看 | 亚洲电影久久久 | 国产99久久久久 | 久久96| 五月网婷婷 | 最近中文字幕mv免费高清在线 | 欧美精品做受xxx性少妇 | 国产精品永久免费在线 | 久久激情视频 久久 | 国产小视频在线免费观看 | 亚洲精品国产精品国自产在线 | 午夜精品一区二区三区在线视频 | 高清国产在线一区 | 色婷婷av国产精品 | 91色国产在线 | 亚洲欧洲av在线 | 最近免费中文字幕mv在线视频3 | 国产一区播放 | 97香蕉久久国产在线观看 | 91综合视频在线观看 | 欧美日韩另类视频 | 99热 精品在线 | 日韩在线精品一区 | 亚州国产视频 | 婷婷色中文网 | 香蕉视频免费看 | 91视频一8mav | 青青河边草观看完整版高清 | 永久免费av在线播放 | 欧美日韩在线免费观看视频 | 91丨精品丨蝌蚪丨白丝jk | 国产精品99蜜臀久久不卡二区 | 亚洲成人黄色在线 | 日韩一区二区三区免费电影 | 国产专区视频在线观看 | 欧美激情视频一区二区三区 | 久久视频在线观看免费 | 日本中文字幕在线看 | 国产午夜在线 | 久久一线| 91网址在线看 | 手机看片中文字幕 | 久久综合一本 | 正在播放亚洲精品 | 亚洲激情视频在线 | 91精品婷婷国产综合久久蝌蚪 | 国产在线一线 | 91chinesexxx| 一区二区三区精品在线视频 | 日韩精品电影在线播放 | 久久精品123| 久久免费国产精品 | 日韩网站在线免费观看 | 人人爱人人射 | 东方av免费在线观看 | 国产成人精品一区二区三区福利 | 国产一区电影在线观看 | 黄色电影在线免费观看 | 黄色毛片在线观看 | 国产在线观看免 | 2022久久国产露脸精品国产 | 国产精品一区二区三区在线播放 | 免费观看一级 | 久久免费看 | 亚洲成人网av| 美女网站视频免费黄 | 特黄色大片 | 日韩免费高清在线观看 | 亚州精品视频 | 99久久99久久精品国产片 | 27xxoo无遮挡动态视频 | 日本性生活一级片 | 91免费在线 | 99成人免费视频 | 在线免费中文字幕 | 欧美精品久久久 | 日本精品视频在线观看 | 国产精品久久久毛片 | 国产精品免费一区二区三区在线观看 | 亚洲欧美少妇 | 日日操日日插 | 成人欧美亚洲 | 国产成人精品一区二 | 亚洲精品视频在线播放 | 欧美一级黄大片 | 麻豆成人在线观看 | 中文字幕中文字幕在线中文字幕三区 | 天堂av在线7 | 狠狠色狠狠色综合系列 | 亚洲在线资源 | www操操 | 国产精品不卡一区 | 亚洲五月花 | 欧美日韩国产色综合一二三四 | 97在线精品国自产拍中文 | 人人看看人人 | 极品久久久 | 成年人免费在线 | 天天干天天操天天射 | 亚洲精品一区二区三区高潮 | 免费日韩一区二区三区 | 国产一区二区免费 | 开心色停停 | 在线观看日韩国产 | 国产精品video爽爽爽爽 | 国内精品久久天天躁人人爽 | 一区二区三区三区在线 | 国产一级做a | 日韩激情视频在线 | 日韩国产欧美在线播放 | 日韩黄色免费看 | 在线亚洲播放 | 国产黄av| 国产一级在线免费观看 | 久草精品视频在线观看 | 久久久国产精品成人免费 | 91热这里只有精品 | 欧美成人999 | 国产精品黑丝在线观看 | 日本精品久久久久影院 | 丰满少妇在线观看网站 | 蜜臀av性久久久久av蜜臀妖精 | 在线亚洲高清视频 | 视频直播国产精品 | 最新av免费在线 | 国产二区视频在线观看 | 在线观看色视频 | av三级在线看 | 婷婷六月网 | 黄色片免费在线 | 日日干天天操 | av网站免费在线 | 超碰在线人人艹 | 久久视频免费 | 国产剧情在线一区 | av成人免费在线 | 日韩三级中文字幕 | 国产精品成人一区二区三区吃奶 | 久久精品视频在线 | 国产午夜精品av一区二区 | 亚洲婷久久 | 国产高清久久久久 | 精品久久久久久亚洲综合网站 | 久草在线视频新 | 久久精品视频在线免费观看 | 日韩精品视频免费看 | 亚洲国产手机在线 | 亚洲综合一区二区精品导航 | 开心激情五月网 | 黄色影院在线播放 | 国产福利中文字幕 | 91视频3p| 亚洲精品91天天久久人人 | 免费a v网站| 四虎视频 | 操操日日 | 在线播放91 | 99热这里精品 | 国产一区二区三区视频在线 | av动图| 99精品国产99久久久久久97 | 婷婷综合伊人 | 久久一区二区三区超碰国产精品 | 日韩色在线| 国内精品久久久久久久久 | 久久久国产精品网站 | 香蕉在线影院 | 少妇精品久久久一区二区免费 | 日韩电影中文,亚洲精品乱码 | 日韩大片在线播放 | 黄色片网站大全 | wwwwww国产 | 日韩黄色在线观看 | 超碰在线观看99 | 91精品在线看 | 色网站在线免费 | www.亚洲激情.com | 久免费 | 免费裸体视频网 | av高清在线 | 热久久最新地址 | 欧美色操| 日日干天夜夜 | 日韩欧美在线不卡 | 亚洲美女在线一区 | 国产免码va在线观看免费 | 免费午夜视频在线观看 | 国产aaa毛片 | 天天操天天射天天爽 | 中文字幕有码在线播放 | 亚洲黄色网络 | 97在线视频免费看 | 免费日韩电影 | 美女免费视频网站 | 国产成人精品一区二区三区免费 | 久久久一本精品99久久精品 | 日产av在线播放 | 国产精品久久久久久久久久ktv | 日本 在线 视频 中文 有码 | 精品 一区 在线 | 国产精品黑丝在线观看 | 色综合中文字幕 | 日本精品在线视频 | 久久久久久久综合色一本 | 毛片网站在线看 | 欧美热久久 | 中文字幕在线视频精品 | 一区二区三区在线免费播放 | 国产精品久久久久久久久费观看 | 四虎影视精品 | 伊人天天狠天天添日日拍 | 最近最新中文字幕视频 | 人人搞人人爽 | 午夜国产影院 | 色综合久久综合中文综合网 | 日韩中文字幕在线看 | 2021国产在线| a久久久久久 | 超碰国产在线 | 青青草国产免费 | 国产不卡av在线 | 在线观看黄色av | 亚洲国产精品va在线看 | 91色吧| 91精品视频免费在线观看 | 麻豆成人网 | 日韩精品专区 | 久草在线视频中文 | 久久视讯 | 中文在线字幕免费观 | 欧美精品久久久久久久久久白贞 | 亚洲欧美在线视频免费 | 不卡av在线免费观看 | 91麻豆文化传媒在线观看 | 久久综合激情 | 狠狠干我 | 亚洲免费一级 | 国产精品美乳一区二区免费 | 亚洲久久视频 | 亚洲午夜激情网 | 亚洲一级免费观看 | 久久综合国产伦精品免费 | 亚洲影院天堂 | 国产精品一区二区av影院萌芽 | 亚洲欧洲成人精品av97 | 国产黄免费在线观看 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 99色| 国产精品夜夜夜一区二区三区尤 | 天天色天天操综合网 | 97精品在线视频 | 色婷婷成人网 | 成人综合婷婷国产精品久久免费 | 日日麻批40分钟视频免费观看 | 国产91欧美| av日韩国产 | 日韩欧美视频在线免费观看 | 91福利社区在线观看 | 久久午夜色播影院免费高清 | 黄色网免费 | 97色视频在线| 97热在线观看 | 字幕网在线观看 | 日韩中字在线观看 | 久久综合狠狠综合久久综合88 | 日韩在线免费视频 | 亚洲精品乱码久久久久久蜜桃不爽 | 在线观看中文字幕 | 一区二区在线影院 | 911精品视频| 国产视频2区 | 国产一级免费观看 | 麻豆久久久久久久 | 成人免费ⅴa | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 91免费视频国产 | 国产传媒一区在线 | 国产精品免费视频观看 | 在线观看a视频 | 中文字幕久久网 | 午夜私人影院久久久久 | 99精品久久精品一区二区 | 91福利试看 | 亚洲精品18p | 美女黄久久 | 日韩免费观看av | 伊人婷婷综合 | 国产成人在线看 | 草久热 | 久久高视频 | 国产一卡二卡在线 | 狠狠色伊人亚洲综合成人 | 欧美色操 | 久久九九影视网 | 国产午夜精品在线 | 黄色av成人在线观看 | 91在线观看高清 | 久久久福利影院 | 久久成人一区二区 | 丁香伊人网| 人人cao| 香蕉视频免费看 | 国产99在线免费 | 在线黄频| 玖玖精品在线 | 日韩性片 | 91人人视频在线观看 | 蜜臀av免费一区二区三区 | 米奇狠狠狠888 | 久久免费av电影 | 高清日韩一区二区 | 性色av一区二区三区在线观看 | 超碰在线免费福利 | 麻豆91在线 | 一区二区三区在线免费 | 午夜国产福利视频 | 久久99热国产| 日韩 在线a| av观看久久久 | 免费精品视频在线 | 久久久国产精华液 | 在线三级播放 | 中文字幕在线观看第二页 | 九九有精品 | 日韩av一卡二卡三卡 | 在线观看黄色小视频 | 亚洲高清国产视频 | 国产97在线视频 | 永久黄网站色视频免费观看w | 狠狠色丁香婷婷综合基地 | 午夜美女av | 久久成人在线视频 | 青草视频网 | 6080yy精品一区二区三区 | 在线观看av小说 | 91成人欧美| 久久久久国产a免费观看rela | 免费的国产精品 | 国产小视频在线观看免费 | 中文字幕一区二区三区四区 | 在线观看你懂的网址 | 精品夜夜嗨av一区二区三区 | 一级黄色免费网站 | 日韩免费成人 | 69精品视频在线观看 | 97国产超碰在线 | 国产精品免费在线视频 | 黄色一区三区 | 91成人精品视频 | 91成人在线免费观看 | 亚洲理论片 | 国产96在线视频 | 人人爽人人爽av | 天天天天天天天操 | 国产又粗又硬又爽视频 | 免费视频资源 | 中文字幕在线一区二区三区 | www.夜夜操| 超碰精品在线观看 | 91激情视频在线观看 | 五月综合网站 | 成人av免费在线播放 | 成人午夜电影在线观看 | 国产精品video爽爽爽爽 | 一级片免费在线 | 亚洲色图av | 日韩一区精品 | 丁香五香天综合情 | 日韩国产精品久久久久久亚洲 | 日本精品在线看 | 色姑娘综合天天 | 国产精品免费一区二区 | 国产伦精品一区二区三区在线 | 久久久亚洲精品 | 精品一二三四五区 | 在线观看岛国av | 久久综合久久综合这里只有精品 | 午夜久久视频 | 在线免费av播放 | 中文字幕av网站 | 久久看免费视频 | 久久精品免费播放 | 中文av在线免费观看 | 婷婷精品进入 | 91精品人成在线观看 | 日韩在线视频播放 | 日本黄色免费播放 | 亚洲成人黄 | 亚洲电影图片小说 | 久久久久久久久久久久av | 91手机电影 | 成年人网站免费观看 | 亚洲天天综合网 | 欧美日韩高清一区二区三区 | 国产成人综合图片 | a在线观看国产 | 在线观看国产v片 | 激情文学丁香 | 国产视频在| 日韩高清一二三区 | 午夜精品三区 | 欧美一级高清片 | 97av.com| a一片一级| 亚洲欧美成人 | 91看片淫黄大片一级在线观看 | 亚洲一级免费观看 | av网站在线免费观看 | 丁香九月激情综合 | 九色91在线视频 | 亚洲欧美在线视频免费 | 国产视频美女 | 日韩免费专区 | 日韩视频一区二区 | 国产在线不卡精品 | 天海翼一区二区三区免费 | 成人午夜网址 | 91视频在线观看免费 | 久久综合九色综合久99 | a午夜电影| 日韩免费视频观看 | 欧美 亚洲 另类 激情 另类 | 中文国产字幕 | 91精品推荐 | 综合色中文 | 精品久久美女 | 免费观看一区二区三区视频 | 久久久国产精品久久久 | 国产精品一区二区免费视频 | 成人国产在线 | 精品亚洲欧美一区 | 欧美一区在线观看视频 | 国产清纯在线 | 激情久久伊人 | 国产精品久久久久久久久软件 | 婷婷av色综合 | 91av网站在线观看 | 狠狠操夜夜 | 在线观看日本高清mv视频 | 日韩r级电影在线观看 | 国产精品3 | 久久精品国产久精国产 | 国产精品久久视频 | 国产中的精品av小宝探花 | 五月婷婷久久丁香 | 91av手机在线 | 99久久久成人国产精品 | 99久久精品国产一区二区三区 | 午夜手机电影 | 一二三区av | 97视频免费在线 | 国产精品国内免费一区二区三区 | 亚洲在线视频网站 | 六月激情 | 亚洲国产精品久久久久 | 国产伦精品一区二区三区… | av字幕在线| 午夜精品一区二区国产 | 日韩高清片| 久久国产精品久久w女人spa | 色狠狠久久av五月综合 | 欧美精品久久久久久久久久丰满 | 欧美亚洲国产日韩 | 久久99久久99精品免观看软件 | 四虎最新入口 | 国产伦理精品一区二区 | 国产精品2020 | 国产色妞影院wwwxxx | 久久激情婷婷 | 手机在线小视频 | 日韩不卡高清 | 色五月色开心色婷婷色丁香 | 亚洲高清激情 | 婷婷六月综合亚洲 | 男女免费视频观看 | 欧美日比视频 | 99爱视频在线观看 | av福利第一导航 | 丝袜av网站 | 香蕉网在线播放 | www.黄色在线 | 免费的国产精品 | 日韩精品专区在线影院重磅 | 精品uu| 国产成人精品一区二区三区福利 | 亚洲区另类春色综合小说校园片 | 日韩电影在线观看一区二区 | 免费一级片在线 | 色综合天天狠天天透天天伊人 | 九九热国产视频 | 欧美一区二区伦理片 | 在线亚洲播放 | 免费看色网站 | 免费看在线看www777 | 五月天国产精品 | 天天操导航 | 99精品视频在线免费观看 | 久久怡红院 | 成人丝袜| 狠狠色噜噜狠狠狠 | 国产电影一区二区三区四区 | 天天爱天天操天天射 | 免费av网站观看 | 婷婷色网视频在线播放 | 中文字幕亚洲欧美日韩 | 国产高清中文字幕 | 国产在线观看av | 五月天六月丁香 | 香蕉视频在线免费 | 麻豆系列在线观看 | 三级a视频 | 日韩午夜电影院 | 99久久久国产精品免费99 | 日韩免费不卡av | 色噜噜在线观看视频 | 在线天堂中文www视软件 | 伊人av综合| 97碰在线 | 欧美日韩国产xxx | 日韩精品极品视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 99热9| 国产精品高清一区二区三区 | 亚洲第一久久久 |