SQLite 增删改查学习教程

来源:互联网 发布:淘宝换手机屏幕可靠么 编辑:程序博客网 时间:2024/04/20 06:12

最近想尝试使用单机版数据库,免去安装的烦恼。了解SQLite很适合我的目的,学习了一番,将学习后的成果发布上来。

 示例项目代码下载

SQLite GUI工具下载

一、创建数据库

    var filePath = "./1.db";//数据库路径    if (File.Exists(filePath)) File.Delete(filePath);    //创建数据库    SQLiteHelp help = new SQLiteHelp();    help.Create(filePath);

 

二、创建表

 var createTable = @"CREATE TABLE [User] ([ID] INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL,[Name] VARCHAR(500)  NOT NULL,[date] DATE DEFAULT CURRENT_DATE NULL,[time] TIME DEFAULT CURRENT_DATE NULL,[curr] TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL)";help.ExecuteNonQuery(createTable);

 

三、插入数据

 

       List<string> lst = new List<string>();            //Insert 第一种写法            Console.WriteLine("当前时间:{0}", DateTime.Now);          for (var i = 0; i < 30; i++)          {                //插入数据 并返回自增的ID              help.ExecuteInsert("insert into User (Name) values ('武汉经纬视通')");              lst.Add("insert into User (Name) values ('武汉经纬视通')");          }          Console.WriteLine("当前时间:{0} {1}", DateTime.Now, "常规Insert完毕");            //Insert 第二种写法 使用参数化SQL 其他的SQL语句也同样可以这样写            for (var i = 0; i < 30; i++)          {              help["@Name"] = "武汉经纬视通";              help.ExecuteInsert("insert into User (Name) values (@Name)");              lst.Add("insert into User (Name) values ('武汉经纬视通')");          }          Console.WriteLine("当前时间:{0} {1}", DateTime.Now, "参数化Insert完毕");            //将所有的insert放在一个事务里 插入效率会提高            help.ExecuteNonQuery(lst);          Console.WriteLine("当前时间:{0} {1}", DateTime.Now, "批量执行SQL完毕");

 

四、删除数据

          //删除ID<10的数据         help["@ID"] = 10;        help.ExecuteNonQuery("Delete from User where ID<@ID");

五、修改数据

              help["@Name"] = "冲动";            help["@ID"] = 20;            help.ExecuteNonQuery("Update User set Name = @Name where ID = @ID");

六、统计与分页

              //统计总数              var count = help.Count("Select count(*) from User");            var max = help.Count("Select max(ID) from User");            var min = help.Count("Select min(ID) from User");            Console.WriteLine("User 总数:{0} 最大ID:{1} 最小ID {2}", count, max, min);            //查询数据              var dt = help.ExecuteSql("Select * from User");            //查询分页数据 第一页 每页15条              //使用分页SQL语句              dt = help.ExecuteSql("Select * from User limit 0,15");            //封装分页              dt = help.ExecuteSql("Select * from User", 0, 15);

 

七、DataReader读取

          //使用DbDataReader获取数据            using (var reader = help.ExecuteSqlReader("Select * from User", 0, 15))          {              while (reader.Read())              {                  Console.WriteLine("ID:{0},Name:{1},date:{2},time:{3},curr:{4}"                        , reader["ID"], reader["Name"], reader["date"], reader["time"], reader["curr"]);              }          }

 

对于SQLite数据库常用操作的简单封装,提供了完整的例子与GUI可视化查看工具。

关于SQLite的时间数据类型,有TIME,Date,TIMESTAMP 。举例来说,当前时间为2013-03-11 19:44:41,TIME =19:44:41,Date= 2013-03-11,TIMESTAMP=2013-03-11 19:44:41。

在程序的处理中可以不用管,貌似SQLite驱动会自动截取,也就是说,传入Date.Now参数,以上3个类型只会存储自己需要的部分。

 


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击