Cocon90.DB 使用说明

开源库:https://github.com/Cocon90/Cocon90.Db

Sqlite位置:https://www.nuget.org/packages/Cocon90.Db.Sqlite

Mysql位置:https://www.nuget.org/packages/Cocon90.Db.Mysql

SqlServer位置:https://www.nuget.org/packages/Cocon90.Db.SqlServer

一、简介
Cocon90.Db是由Cocon90.Db.Common为核心的类库与其它数据库操作库组合而成,以方便调用为主要目的,支持ORM操作,增、删、改、查、事务、批量执行、创建表、插入或保存记录 等等,并提供多种数据库支持。当前已支持Mysql、Sqlite、SqlServer。

Cocon90.Db is a core class library which is composed of Cocon90.Db.Common and other database operations, which is convenient to call for the main purpose, and provides a variety of database support. Currently supports Mysql, Sqlite, SqlServer.

二、运行环境

环境
NetFramework4.0+ Required
VisualStudio 2015+ Required

三、使用方法
(1)新建一件空的项目,取名Cocon90.Db.Demo
(2)添加对库Cocon90.Db.Common.dll的引用,或者执行Install-Package Cocon90.Db.Common
(3)接下来,如果要操作SqlServer数据库则引入Cocon90.Db.SqlServer,如果要操作Sqlite数据库,则引入Cocon90.Db.Sqlite,如果要操作Mysql,则需要引入Cocon90.Db.Mysql库。

DataBase Require Library
MySql Cocon90.Db.Common,Cocon90.Db.Mysql
Sqlite Cocon90.Db.Common,Cocon90.Db.Sqlite
SqlServer Cocon90.Db.Common,Cocon90.Db.SqlServer

(4)新建Program类,加入Main函数,比如我们要操作Sqlite数据库加入下列代码:

static void Main(string[] args){    var dh = Cocon90.Db.Common.Db.GetDataHelper("Cocon90.Db.Sqlite.dll", "Cocon90.Db.Sqlite.DbDriver", "D:\\mysqlite.db;");// or you can use app.config by this code:    var dh = Cocon90.Db.Common.Db.GetDataHelper();}

如果在要读取配置文件中的app.config中的连接语句,则需要在App.config中进行如下配置:

<configuration><connectionStrings><!--<add name="ConnectionString" providerName="Cocon90.Db.Mysql.dll|Cocon90.Db.Mysql.DbDriver" connectionString="Server=127.0.0.1;Port=3306;Database=world;Uid=root;Pwd=123456;"/>--><!--<add  name="ConnectionString" providerName="Cocon90.Db.SqlServer.dll|Cocon90.Db.SqlServer.DbDriver" connectionString="Server=127.0.0.1;Database=world;Uid=sa;Pwd=123456;"/>--><add name="ConnectionString" providerName="Cocon90.Db.Sqlite.dll|Cocon90.Db.Sqlite.DbDriver" connectionString="Data Source=D:\Application\DbTools\sqliteSpy\SQLiteSpy.db3;"/></connectionStrings></configuration>

然后即可进行数据库的常规操作:

    var tab = dh.GetTable("select * from Student");    dh.ExecNoQuery("...");    dh.GetString("...");    dh.GetBoolean("...");    dh.GetInt("...");    dh.GetListString("...");    dh.GetPagedResult("...");    dh.CreateOrUpdateTable(typeof(Model.Student));

下面是常用的一些测试:

 class Program    {static void Main(string[] args){//var dh = Cocon90.Db.Common.Db.GetDataHelper("Cocon90.Db.Sqlite.dll", "Cocon90.Db.Sqlite.DbDriver", "D:\\Application\\DbTools\\sqliteSpy\\SQLiteSpy.db3;");

            var dh = Cocon90.Db.Common.Db.GetDataHelper();

            var createSql = dh.GetCreateTableSql<Model.CountryLanguageModel>();            var updateTabSql = dh.GetUpdateTableSql(typeof(Model.CountryLanguageModel));            var effRow = dh.CreateOrUpdateTable<Model.CountryLanguageModel>();

            var needInserts = new List<Model.CountryLanguageModel>();            Random rand = new Random();for (int i = 0; i < 500; i++)            {                needInserts.Add(new Model.CountryLanguageModel() { Percent = (decimal)(rand.NextDouble() * 10), Date = DateTime.Now.AddDays(-1 * i), Guid = Guid.NewGuid(), IsOfficial = rand.Next(0, 2) > 0, Code = i, Language = "Lang_" + i });            }            var succRows = dh.Save(needInserts.ToArray());            dh.GetTable("SELECT * FROM countrylanguage");            var lst = dh.GetList<Model.CountryLanguageModel>("SELECT * FROM countrylanguage");            Console.WriteLine(lst.Count);            var oneModel = dh.GetOne<Model.CountryLanguageModel>("select * from countrylanguage");            var oneModel2 = dh.GetOneByPrimaryKey<Model.CountryLanguageModel>(1, "Lang_1");//var successRows = dh.Insert(new Model.CountryLanguage() { Percent = 1.555m, IsOfficial = false, Code = 2, Language = "Lang" },//      new Model.CountryLanguage() { Percent = 1.66m, IsOfficial = true, Code = 3, Language = "Lang" });            var updateSql = dh.GetUpdateSqlByPrimaryKey(new Model.CountryLanguageModel() { Percent = 9.9m }, true, "1=1 AND 2=2", 3, "Lang");            var updateSql2 = dh.GetUpdateSql(new Model.CountryLanguageModel { Code = 3, Percent = 3.3m }, false, null);            var updateSql3 = dh.GetUpdateSqlByWhere(new Model.CountryLanguageModel { Code = 3, Percent = 3.3m }, true, "Language='Lang'", new Common.Data.Params("@Name", "song"));            var updateRow3 = dh.UpdateByByWhere(new Model.CountryLanguageModel { Percent = 3.3m }, true, "Language='Lang'");            var updateRow = dh.UpdateByPrimaryKey(new Model.CountryLanguageModel { Percent = 4.5m }, true, null, 3, "Lang");            var deleteSql = dh.GetDeleteSqlByPrimaryKey<Model.CountryLanguageModel>("1=1", 3, "Lang");            var deleteSql1 = dh.GetDeleteSqlByPrimaryKey<Model.CountryLanguageModel>(null, 3, "Lang_111");            var deleteSql2 = dh.GetDeleteSqlByWhere<Model.CountryLanguageModel>("Percentage=@Perc", new Common.Data.Params("Perc", 100));            var deleteSql3 = dh.GetDeleteSql(new Model.CountryLanguageModel { Code = 3, Percent = 3.3m }, "1=@myParam", new Common.Data.Params("myParam", 1));            var deleteSql4 = dh.GetDeleteSql<Model.CountryLanguageModel>(null, "1=@myParam", new Common.Data.Params("myParam", 1));            var successRow = dh.Delete(new Model.CountryLanguageModel { Code = 3, Percent = 4.5m });

            var saveSql = dh.GetSaveSql(new Model.CountryLanguageModel() { Percent = 1.555m, IsOfficial = false, Code = 2, Language = "Lang" },new Model.CountryLanguageModel() { Percent = 1.66m, IsOfficial = true, Code = 3, Language = "Lang" });            var saveRows = dh.Save(new Model.CountryLanguageModel() { Percent = 1.555m, IsOfficial = false, Code = 2, Language = "Lang" },new Model.CountryLanguageModel() { Percent = 1.66m, IsOfficial = true, Code = 3, Language = "Lang" });            var executeNoQuery = dh.ExecNoQuery("update countrylanguage set Percentage=4.4 where Percentage=@Percentage", new Model.CountryLanguageModel { Percent = 1.6m });            var pageSql = dh.Driver.GetPagedSql("select * from countrylanguage", "CountryCode", true, 1, 10);            var pageResult = dh.GetPagedResult<Model.CountryLanguageModel>("select * from countrylanguage", "countrycode", true, 1, 10);

        }    }

其中测试实体类:

    public class Student    {        [Cocon90.Db.Common.Attribute.Column(PrimaryKey = true)]public Guid? Id { get; set; }public string Name { get; set; }public string Addrss { get; set; }public DateTime? Birthday { get; set; }    }
    [Table(TableName = "CountryLanguage")]public class CountryLanguageTab    {        [Column(PrimaryKey = true, ColumnName = "CountryCode")]public int? Code { get; set; }        [Column(PrimaryKey = true, CreateDDL = "varchar(20)")]public string Language { get; set; }public bool? IsOfficial { get; set; }        [Column(ColumnName = "Percentage", PrimaryKey = false)]public decimal? Percent { get; set; }public DateTime? Date { get; set; }public Guid? Guid { get; set; }    }

    [Table(TableName = "CountryLanguage")]public class CountryLanguageModel : CountryLanguageTab    {        [Ignore]public string CodeAndLang { get; set; }    }

需要注意的是,实体的设计时,所有类型都必须可以为NULL值(如果是结构体类型,请采用可空类型)。

Cocon90.Db调用方法相关推荐

  1. php 嵌套while循环,PHP/SQL在嵌套while循环中替代db调用

    我的第一篇文章,尽可能地做到尽可能详尽,如果我弄错了某些东西,请提前道歉.我是PHP/SQL的新手,请耐心等待.我发现了几个有关循环内循环的类似问题,但我不确定这些解决方案适用于我的情况.PHP/SQ ...

  2. [转载]:C#两种不同的存储过程调用方法

    两种不同的存储过程调用方法 为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的"官方"方法.另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后 ...

  3. MUSDB18-HQ音乐分轨训练集和MUSDB调用方法

    MUSDB18-HQ音乐分轨训练集和MUSDB调用方法 MUSDB18和MUSDB18-HQ简单介绍 MUSDB 组成 解析器 Musdb库API介绍 用法举例 设置musdb 遍历MUSDB18曲目 ...

  4. 2:什么是反射与反射的应用及调用方法(by-朝夕)

    什么是反射与反射的应用及调用方法 前言 为什么学习反射 1.反射创建对象 2.反射调用方法 3.反射调用带参数构造方法 4.反射调用方法 5.反射调用泛型类+泛型方法 6.反射的性能问题 7.反射在框 ...

  5. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  6. php帝国系统调出图片内空,帝国CMS图集字段的大图,小图,说明的调用方法

    本文实例讲述了帝国CMS图集字段的大图,小图,说明的调用方法.分享给大家供大家参考.具体方法如下: 复制代码代码如下: $arr = array(); $arr = $navinfor['morepi ...

  7. dede列表分页php,dede列表页分页英文调用方法

    使用于英文模板的dede分页代码,可以让分页默认中文变成英文的方式. 修改arc.listview.class.php 在include/arc.listview.class.php 调用方法 {de ...

  8. Xcode中Objc动态调用方法同时避免警告的几个办法

    我们在Xcode中使用objc写代码的时候往往会碰到动态调用方法的时候. 如果是静态调用这很常见,不会有任何问题: [self performSelector:@selector(method)]; ...

  9. @Transactional-同一个类中方法自调,调用方法事物失效

    问题分析 一个类中的方法调用另一个事物传播性为创建事物的方法,调用的方法事物失效? SpringAOP 代理的Service对象调用了其方法,这个方法再去调用这个Service中的其他方法是没有使用A ...

最新文章

  1. 牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)
  2. 通过System.Management获取操作系统信息
  3. 案例开发分析 || ​​​​​​​Scheduler组件
  4. mysql myisampack_每天进步一点达——MySQL——myisampack
  5. 爆赞!Jetpack-MVVM-高频提问和解答,满满干货指导
  6. shiro扩展获得用户登录类型并提供cookie的方式记住用户密码
  7. 计算机的配置以及简单的操作
  8. iOS开发----UI部分----iPhone各类屏幕的分辨率
  9. java指定jre_java 运行应用程序,指定jre版本
  10. Java多线程机制(一)
  11. 致初入职场的兄弟姐妹
  12. 多变量微积分(4)——多重积分之三重积分
  13. android 蓝牙读取数据格式,解析Android蓝牙数据包
  14. 神经网络算法是什么意思,人工神经网络英文缩写
  15. 安装fitz报错_Kylo单机安装详解
  16. P2P风控措施和风控流程
  17. u盘虚拟启动cd linux,[CDLinux]制作U盘CDLinux系统启动盘
  18. Apache反向代理设置
  19. redis学习之redis的发布和订阅
  20. 内核线程ksoftirqd

热门文章

  1. Python redis 批量模糊删除keys
  2. 250g硬盘linux如何分区合适,500G的硬盘,怎么分区比较合理?
  3. 达梦数据库迁移oracle数据乱码,oracle迁移到达梦数据库之存储过程中char类型的不同处理...
  4. 匹配左括号或者右括号js_九章算法 | 蚂蚁金服面试题:有效的括号字符串
  5. undo the local changes
  6. xcode 自己常用到的快捷键
  7. Matlab绘图设置总结
  8. 利用深度迁移学习进行基于图像的植物病害识别
  9. jdk 安装cmd运行java_windows下安装jdk,cmd下编译运行java程序一点心得
  10. php 压缩html css,PHP实现动态压缩js与css文件的方法