• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

SQLiteHelper(C#)z

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

http://www.codeproject.com/Articles/746191/SQLite-Helper-Csharp

 

Introduction

I have written a small class, SQLiteHelper which aims to simplify the usage of SQLite in C#.

Prerequisite

This small class is built on top of System.Data.SQLite.DLL. A reference of this DLL must be added into your projects.

Download: https://system.data.sqlite.org

List of Simplified Functions

  1. GetTableStatus
  2. GetColumnStatus
  3. CreateTable
  4. BeginTransaction, Commit, Rollback
  5. Select
  6. Execute
  7. ExecuteScalar
  8. ExecuteScalarStr
  9. ExecuteScalarInt
  10. ExecuteScalarDateTime
  11. ExecuteScalarDecimal
  12. ExecuteScalarBlob
  13. Escape
  14. Insert
  15. Update
  16. RenameTable
  17. CopyAllData
  18. DropTable

Getting Start

Add this using statement at the top of your class:

Copy Code
using System.Data.SQLite;

 

SQLiteConnection and SQLiteCommand have to be initialized before using SQLiteHelper:

Example:

Copy Code
using (SQLiteConnection conn = new SQLiteConnection("data source=C:\\data"))
{
    using (SQLiteCommand cmd = new SQLiteCommand())
    {
        cmd.Connection = conn;
        conn.Open();
 
        SQLiteHelper sh = new SQLiteHelper(cmd);
 
        // do something...

        conn.Close();
    }
}

1. GetTableStatus

Get all information of tables in the database.

Copy Code
DataTable dt = sh.GetTableStatus();

2. GetColumnStatus

Get all information of columns in specific table.

Copy Code
// Get column's information from table "person"
DataTable dt = sh.GetColumnStatus("person");

3. CreateTable

Create table.

Example table structure: Person

Column Name Data Type Primary Key Not Null Default Value
id int true    
name text      
membershipid int      
level decimal     5.5
Copy Code
SQLiteTable tb = new SQLiteTable("person");
 
tb.Columns.Add(new SQLiteColumn("id", true));
tb.Columns.Add(new SQLiteColumn("name"));
tb.Columns.Add(new SQLiteColumn("membershipid", ColType.Integer));
tb.Columns.Add(new SQLiteColumn("level", ColType.Decimal, false, false, "5.5"));
 
sh.CreateTable(tb);

4. BeginTransaction, Commit, Rollback

Applying transactions.

Copy Code
sh.BeginTransaction();
 
try
{
    // execute some queries

    sh.Commit();
}
catch
{
    sh.Rollback();
}

5. Select

Return the query result in DataTable format.

Copy Code
DataTable dt = sh.Select("select * from person order by id;");

6. Execute

Execute single SQL query.

Copy Code
sh.Execute("insert into person(name)values('hello');");

7. ExecuteScalar

Return the result from first row first column in object format.

Copy Code
object ob = sh.ExecuteScalar("select max(id) from person;");

8. ExecuteScalarStr

Return the result from first row first column in string format.

Copy Code
string s = sh.ExecuteScalarStr("select max(id) from person;");

9. ExecuteScalarInt

Return the result from first row first column in Int format.

Copy Code
int i = sh.ExecuteScalarInt("select max(id) from person;");

10. ExecuteScalarDateTime

Return the result from first row first column in DateTime format.

Copy Code
DateTime date = sh.ExecuteScalarDateTime("select dateregister from person where id = 1;");

11. ExecuteScalarDecimal

Return the result from first row first column in decimal format.

Copy Code
decimal d = sh.ExecuteScalarDecimal("select level from person where id = 1;");

12. ExecuteScalarBlob

Return the result from first row first column in byte[] format.

Copy Code
byte[] ba = sh.ExecuteScalarBlob("select photo from person where id = 1;");

13. Escape

Escape string sequence for text value to avoid SQL injection or invalid SQL syntax to be constructed.

Copy Code
string value = sh.Escape(input);

14. Insert

Insert data.

Sample 1: Insert single row.

Copy Code
var dic = new Dictionary<string, object>();
dic["name"] = "John";
dic["membershipid"] = 1;
dic["level"] = 6.8;
 
sh.Insert("person", dic);

Sample 2: Insert multiple rows.

Copy Code
var lst = new List<Dictionary<string,>();
 
var dic1 = new Dictionary<string,>();
dic1["name"] = "John";
dic1["membershipid"] = 1;
dic1["level"] = 6.8;
lst.Add(dic1);
 
var dic2 = new Dictionary<string,>();
dic2["name"] = "Catherine";
dic2["membershipid"] = 2;
dic2["level"] = 9.7;
lst.Add(dic2);
 
var dic3 = new Dictionary<string,>();
dic3["name"] = "Thomas";
dic3["membershipid"] = 3;
dic3["level"] = 8.6;
lst.Add(dic3);
 
sh.Insert("person", lst);

16. Update

Update row.

Sample 1: Update with single condition (where id = 1)

Copy Code
var dicData = new Dictionary<string, object>();
dicData["name"] = "no name";
dicData["membershipid"] = 0;
dicData["level"] = 5.5;
 
sh.Update("person", dicData, "id", 1);

Sample 2: Update with multiple condition (where membership = 1 and level = 5.5)

Copy Code
var dicData = new Dictionary<string, object>();
dicData["name"] = "no name";
dicData["status"] = 0;
dicData["money"] = 100;
dicData["dateregister"] = DateTime.MinValue;
 
var dicCondition = new Dictionary<string,>();
dicCondition["membershipid"] = 1;
dicData["level"] = 5.5;
 
sh.Update("person", dicData, dicCondition);

16. RenameTable

Rename a table.

Copy Code
sh.RenameTable("person", "person_backup");

17. CopyAllData

Copy all data from one table to another.

Copy Code
sh.CopyAllData("person", "person_new");

Before copying, SQLiteHelper will scan the two tables for match columns. Only columns that exist in both tables will be copied.

18. DropTable

Drop table, delete a table

Copy Code
sh.DropTable("person");

 

That's it, guys/girls. Comments are welcome.

Happy coding

Also available at: https://sh.codeplex.com/[^]


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#/Java/PHPDES加密互操作发布时间:2022-07-10
下一篇:
C#添加应用路径到系统PATH变量发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap