• SQLite 增删改查学习教程


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

     示例项目代码下载

    SQLite GUI工具下载

    SqliteDev (推荐使用)

    一、创建数据库

        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个类型只会存储自己需要的部分。

    
    
  • 相关阅读:
    其它人的面试
    面试准备——(一)测试基础(3)测试用例的编写
    面试准备——(三)Selenium(1)基础问题及自动化测试
    HTTP简介,http是一个属于应用层的面向对象的协议
    fidder(介绍)
    软件测试基础知识大全
    为什么要走川藏线(人文版)(转)
    将Windows 8.1 系统窗口背景设置成淡绿色?
    如何看待淘宝二手交易APP“闲鱼”推出的新功能“闲鱼小法庭”?
    轻轻松松种绿豆
  • 原文地址:https://www.cnblogs.com/codealone/p/2954525.html
Copyright © 2020-2023  润新知