首页 > 数据库 >.NET Core C#系列之XiaoFeng.Data.DataHelper数据库操作

.NET Core C#系列之XiaoFeng.Data.DataHelper数据库操作

时间:2022-10-24 23:55:54浏览次数:73  
标签:Core Account Data XiaoFeng C# Tb var data select

XiaoFeng.Data.DataHelper,当前类库支持MySql,SqlServer,Oledb,SQLite,Oracle,DM等数据库

下面就以SqlServer为例,详细讲解一下当前类库。

第一步,引用 System.Data.SqlClient驱动库

在VS中的解决方案中,依赖项右击管理nuget程序包

在当前界面输入System.Data.SqlClient,如下图 点击安装即可,安装成功后如下图:

第二步,安装XiaoFeng程序包

和第一步一样在管理Nuget程序包里输入 XiaoFeng ,然后安装即可。

第三步,开始写程序

var data = new XiaoFeng.Data.DataHelper(new XiaoFeng.Data.ConnectionConfig
{
ProviderType= XiaoFeng.Data.DbProviderType.SqlServer,
ConnectionString= "server=.;uid=testuser;pwd=123;database=Fay_TestDb;"
});
var dt = data.ExecuteDataTable("select * from F_Tb_Account;");

ConnectionConfig类是一个数据库连接配置类,下边代码就是 配置类的属性,不再赘述。

//
// 摘要:
//     驱动类型
[JsonConverter(typeof(StringEnumConverter))]
[Description("驱动类型")]
public DbProviderType ProviderType { get; set; }

//
// 摘要:
//     数据库连接字符串
[Description("数据库连接字符串")]
public string ConnectionString { get; set; }

//
// 摘要:
//     是否启用事务处理
[Description("是否启用事务处理")]
public bool IsTransaction { get; set; }

//
// 摘要:
//     获取或设置在终止尝试执行命令并生成错误之前的等待时间
[Description("执行超时时间")]
public int CommandTimeOut { get; set; }

//
// 摘要:
//     缓存时长 单位为秒 0为永久缓存
[Description("缓存时长 单位为秒 0为永久缓存")]
public int CacheTimeOut { get; set; }

//
// 摘要:
//     缓存类型 0不缓存
[Description("缓存类型 Default 默认,No 不缓存,Memory 内存,Disk 磁盘,Redis,Memcache,MongoDB")]
[JsonConverter(typeof(StringEnumConverter))]
public CacheType CacheType { get; set; }

//
// 摘要:
//     事务级别
[Description("事务级别 DbNull 空级别,Serializable 串行读,RepeatableRead 可重复读,ReadCommitted 提交读,ReadUncommitted 未提交读,Snapshot 隔离未提交读,Chaos 混乱读,Unspecified 未指定")]
[JsonConverter(typeof(StringEnumConverter))]
public IsolationLevel IsolationLevel { get; set; }


//
// 摘要:
//     是否启用连接池
[Description("是否启用连接池")]
public bool IsPool { get; set; }

//
// 摘要:
//     应用池最大数量
[Description("连接池最大数量")]
public int MaxPool { get; set; }

接下来继续说其它用法

1.直接执行SQL语句

var non1 = data.ExecuteNonQuery("insert into F_Tb_Account(Account,Password) values('jacky','admin');"); non1值,如果non1是-1则表示 执行出错,可以通过data.ErrorMessage拿到最后一次执行出错的错误信息 如果non1是大于等于0则表示执行SQL语句后所执行的行数

2.返回DataTable

var dt = data.ExecuteDataTable("select * from F_Tb_Account;"); dt就是一个datatable

3.直接返回首行首列

var val1 = data.ExecuteScalar("select Acount from F_Tb_Account;"); val1类型是object对象,根据数据库的值不同我们可以自定义转换如:var val2 = (int)val1;也可以用XiaoFeng自带的扩展方法,var val2 = val1.ToCast<int>();

4.直接返回DataReader

var dataReader = data.ExecuteReader("select * from F_Tb_Account;"); dataReader就是DataReader对象

5.直接返回DataSet

var dataSet = data.ExecuteDataSet("select * from F_Tb_Account;select * from F_Tb_Account;"); dataSet就是DataSet对象

6.执行存储过程

var data = data.ExecuteDataTable("proc_name", System.Data.CommandType.StoredProcedure, new System.Data.Common.DbParameter[]
{
data.MakeParam(@"Account","jacky")
});

7.SQL语句带存储参数

var data2 = data.ExecuteDataTable("select * from F_Tb_Account where Account=@Account;", new System.Data.Common.DbParameter[]
{
data.MakeParam(@"@Account","jacky")
});

8.直接转换成对象

var models = data.QueryList<Account>("select * from F_Tb_Account"); var model = data.Query<Account>("select * from F_Tb_Account"); 其实这里面也是在内部调用了 DataTable转List<Model>方法,下边是方法体代码

public T Query<T>(string SQL)
{
    if (SQL.IsNullOrEmpty())
    {
        return default(T);
    }
    
    ValueTypes valueType = typeof(T).GetValueType();
    T result = default(T);
    switch (valueType)
    {
        case ValueTypes.Value:
        case ValueTypes.Enum:
        case ValueTypes.String:
            return ExecuteScalar(SQL).ToCast<T>();
        case ValueTypes.Class:
        case ValueTypes.Struct:
            return ExecuteDataTable(SQL).ToEntity<T>();
        default:
            return result;
    }
}

public List<T> QueryList<T>(string SQL)
{
    if (SQL.IsNullOrEmpty())
    {
        return new List<T>();
    }
    return ExecuteDataTable(SQL).ToList<T>();
}

到目前基本功能已经介绍完毕,运行也可以用线程池来操作,自己可以慢慢摸索,不再多多介绍。 下边把整体代码再列一下

var data = new XiaoFeng.Data.DataHelper(new XiaoFeng.Data.ConnectionConfig
{
    ProviderType= XiaoFeng.Data.DbProviderType.SqlServer,
    ConnectionString= "server=.;uid=testuser;pwd=123;database=Fay_TestDb;"
});
var dt = data.ExecuteDataTable("select * from F_Tb_Account;");
var non1 = data.ExecuteNonQuery("insert into F_Tb_Account(Account,Password) values('jacky','admin');");
var val1 = data.ExecuteScalar("select Acount from F_Tb_Account;");

var dataReader = data.ExecuteReader("select * from F_Tb_Account;");

var dataSet = data.ExecuteDataSet("select * from F_Tb_Account;select * from F_Tb_Account;");

var dta = data.ExecuteDataTable("proc_name", System.Data.CommandType.StoredProcedure, new System.Data.Common.DbParameter[]
{
    data.MakeParam(@"@Account","jacky")
});

var data2 = data.ExecuteDataTable("select * from F_Tb_Account where Account=@Account;", new System.Data.Common.DbParameter[]
{
    data.MakeParam(@"@Account","jacky")
});

var models = data.QueryList<Account>("select * from F_Tb_Account");

var model = data.Query<Account>("select top 1 * from F_Tb_Account");

开源地址:https://github.com/zhuovi/XiaoFeng/tree/master/Threading

语雀地址:https://www.yuque.com/fayelf/xiaofeng/yl8tkh

开源不易,多多支持~

标签:Core,Account,Data,XiaoFeng,C#,Tb,var,data,select
From: https://www.cnblogs.com/zhaocici/p/16823506.html

相关文章

  • .NET Core C#系列之XiaoFeng.Data.IQueryableX ORM框架
    ​         当前对象操作数据库写法和EFCore极度类似,因为现在大部分程序员都懒得去写SQL,再一个就是项目作大了或其它原因要改数据库,每次改数据库,那么写的SQL语......
  • ACSX 10 月专题训练:DP
    FreeMarkethttps://www.luogu.com.cn/problem/CF364B一个观察是第一个限制是无用的,原因在于你拿去的如果跟它有交你就只换没交的部分就行了。所以你手上一个总权值为X......
  • NETCORE - Socket 通信
    NETCORE-Socket通信创建两个.net项目,一个做为服务端,一个做为客户端。项目1:NETCORE.SSocket.Server (.net6 控制台应用程序)创建socket服务类:SocketServe......
  • C1. Make Nonzero Sum (easy version)
    C1.MakeNonzeroSum(easyversion)Thisistheeasyversionoftheproblem.Thedifferenceisthatinthisversionthearraycannotcontainzeros.Youcanma......
  • CF1744B Even-Odd Increments
    简要题意\(T\)组数据,每组数据给定一个长度为\(n\)的数列,有\(q\)次操作,共有两种操作:\(\texttt{0x}\),给数列中所有偶数加上\(x\);\(\texttt{1x}\),给数列中所有奇......
  • [FAQ] MySQL Workbench 设置界面字体大小
    MySQLWorkbench连接数据库后,点击右上角的图标,进入Fonts&Colors设置。示例: Ref:MySQLWorkbenchLink:https://www.cnblogs.com/farwish/p/16805924.html......
  • Linux系统配置cron定时任务
    创建用户:groupadd-g567testuseradd-u567-gtest-d/home/v-mvchowntest:test/home/v       ......
  • 【C语言进阶】二.指针(中)
    (五)函数指针1.定义:指向函数的指针:#include<stdio.h>intAdd(inta,intb){intz=0;z=a+b;returnz;}intmain(){inta=10;intb=20;printf("%d\n",Ad......
  • Oracle-11g静默安装-netca.rsp
    响应模板文件netca.rsp,可以静默模式运行netca命令,配置并启动Oracle网络监听listener.ora和网络服务tnsnames.ora。##复制文件以备不时之需cp/home/oracle/database/respons......
  • C语言学习(闰年;n!;分数交叉加减;找最值;猜字游戏)
    #include<stdio.h>#include<time.h>//intmain()//{////在switch语句当中"continue"是没有的“continue"是循环语句当中的////define预处理指令////if语句当中0......