asp.net框架有几种(ASP.NET原创框架七-重要类库介绍)

ASP.NET原创框架七-重要类库介绍

asp.net框架有几种(ASP.NET原创框架七-重要类库介绍)(1)

关于数据库的访问类NodeDBEngine和节点库类BaseEngineDB

using(NodeDBEngine m_NodeDBEngine=new NodeDBEngine())

{

。。。

}

using(BaseEngineDB m_BaseEngineDB=GetBaseEnginDBFromNodeUUID(nodeuuid))

{

。。。

}

为实现大数据的访问,采用分布式部署,包含中心库和各节点库,分布式表特定义表数据的落点字段一般表数据落点字段为表名 "_nodeuuid"

如表名为sys_users 那么落点字段为sys_users_nodeuuid

如是全局表那么表的落点字段名为表名 "_uuid"

如全局表名为sys_apps,那么它的落点字段名为sys_apps_uuid

不同的应用模块所使用的数据库表名组成:表前缀 实际表名,表前缀一般为应用的类名

如系统CoreSYS.SYS 核心应用的表名为sys,核心应用表名如sys_companys ,sys_loginrecord等

关于分布式表的落点字段值组成

lastTimestamp.ToString().PadLeft(13, '0') sequence.ToString().PadLeft(4, '0') serverNO tradeCode;

lastTimestamp:为1970-1-1 00:00:00到当前时间的毫秒数

sequence.ToString().PadLeft(4, '0'):四位序列号

serverNO:三位的数据库编号000-999

tradeCode:三位的行业编码其中系统应用的行业编码SYS由000代替

如sys_companys_nodeuuid为

14488934049460000003000

1448893404946:1970-1-1 00:00:00到记录产生时间的毫秒数

0000:四位序列号

003:三位的数据库编号

000:三位行业编码000为系统应用SYS

数据库节点的配置

asp.net框架有几种(ASP.NET原创框架七-重要类库介绍)(2)

asp.net框架有几种(ASP.NET原创框架七-重要类库介绍)(3)

中心库的表一般以center_为前缀

应用表的生成

asp.net框架有几种(ASP.NET原创框架七-重要类库介绍)(4)

NodeDBEngine会对执行的SQL语句和参数进行分析,获得需要在那个库节点库执行或哪些库节点执行

也可根据落点id获得执行的

static public BaseEngineDB GetBaseEnginDBFromNodeUUID(string nodeuuid)

nodeuuid:落点字段值

public static BaseEngineDB GetBaseEngineDB(string sDBNO = null)

sDBNO:三位的数据库编号

static public BaseEngineDB GetBaseEngineDB(string sDBNO, out List<OneSlaveDB> m_SlaveDBList)

sDBNO:三位的数据库编号

m_SlaveDBList:为节点库的从库列表

public class OneSlaveDB

{

public OneSlaveDB();

public string dbip { get; set; }

public string dbname { get; set; }

public string dbstring { get; set; }

public string dbtype { get; set; }

public string lgname { get; set; }

public string lgpwd { get; set; }

public DBType m_DBType { get; set; }

public string SlaveDBUUID { get; set; }

}

public static BaseEngineDB GetBaseEngineDB2(string sDBNO,out List<OneSlaveDB>m_SlaveDBList)

sDBNO:三位的数据库编号

m_SlaveDBList:为节点库的从库列表

static public BaseEngineDB GetBaseEngineFromNodeUUID(string nodeuuid)

nodeuuid:落点字段值

常用函数介绍(其他函数可查阅NodeDBEngine和BaseEngineDB表)

一、执行一个SQL

public bool XNActSQLVar(string SQLString, out int nCnt, List<Hashtable> list, bool bTransaction = true, List<OneDB> m_CallDBList = null)

SQLString:执行的SQL语句

nCnt:返回影响的行数

list:参数数组

bTransaction:是否使用事务,默认为使用事务

m_CallDBList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

SQL的各类参数使用以下函数构建

public static Hashtable VarBool(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回bool型

public static Hashtable VarDateTime(string sVarName, DateTime tDayTime, VarDirect m_VarDircet = VarDirect.IN);

返回时间l型

public static Hashtable VarDateTime(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回时间型

public static Hashtable VarDecimal(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回数字型

public static Hashtable VarFloat(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回浮点型

public static Hashtable VarInt16(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回int6型

public static Hashtable VarInt32(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回int32型

public static Hashtable VarInt64(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回int64型

public static Hashtable VarString(string sVarName, string sVarValue, VarDirect m_VarDircet = VarDirect.IN);

返回串型

二、执行一组SQL语句

public bool XNActSQLVar(List<string> m_SQLList, out List<int> m_nActCntList, List<List<Hashtable>> m_varListList, List<OneDB> m_CallDBList = null)

m_SQLList:SQL语句数组

m_nActCntList:返回SQL执行后影响的行数组

m_varListList:参数数组的数组

m_CallDBList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

三、执行一组不同数据落点的SQL语句

public bool XNActBusinessSQLVar(List<string> m_SQLList, out List<int> m_ActCntList, List<List<Hashtable>> m_ListVarList, List<List<OneDB>> m_CallDBListList = null)

m_SQLList:SQL语句数组

m_nActCntList:返回SQL执行后影响的行数组

m_ListVarList:参数数组的数组

m_CallDBListList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

四、随机获得一个数据库节点

static public OneDB GetOneNodeDB(string key, bool bLock = true, bool bReadOnly = false)

五、获得数据

public DataSet XNGetRecordVar(string SQLString, out bool bOK, List<Hashtable> list, List<OneDB> m_CallDBList = null)

SQLString:执行的查询SQL语句

bOK:返回是否执行成功

list:SQL参数数组

m_CallDBList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

函数返回数据集DataSet

六、查询分页数据

public Object XNGetSQLPageRecordVar(string SQLString, int nPageSize, int nPageIndex, out bool bOK, Hashtable[] list, List<OneDB> m_CallDBList = null)

SQLString:执行的查询SQL语句

nPageSize:分页大小

nPageIndex:第几页(从1开始)

bOK:返回是否执行成功

list:SQL参数数组

m_CallDBList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

返回的对象

public class RecordReturn

{

public bool bOK;//是否执行成果

public object data;//返回的行数据List<Hashtable>

public DataSet dataset;//返回的行数据

public object m_OBJ;//其他自定义数据返回

public int nPageCount;//返回总页数

public int nPageIndex;//返回第几分页

public int nPageSize;//返回的分页大小

public double nSumData;//返回统计字段的合计值

public int RecordCnt;//返回数据的总行数

public string sError;//执行错误返回的错误信息

public RecordReturn();

}

七、返回带json字段的数据

public Object XNGetSQLPageJsonRecordVar(string SQLString, int nPageSize, int nPageIndex, string jsonfield, out bool bOK, List<Hashtable> list, List<OneDB> m_CallDBList = null)

SQLString:执行的查询SQL语句

nPageSize:分页大小

nPageIndex:第几页(从1开始)

jsonfield:json字段名称

bOK:返回是否执行成功

list:SQL参数数组

m_CallDBList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

返回的RecordReturn对象

八、按时间分表的数据获得(默认时间字段为createtime)

表按时间类型进行分割一般按年 按月 按日分表

如按年份表的表名如:

sys_mypaytips2021,sys_mypaytips2022.。。。

表名为sys_maypaytips 后面数字为年

如按月份表的表名如:

sys_personbatchoutmoney201712,sys_personbatchoutmoney201801.。。。

表名为sys_personbatchoutmoney 后面数字为年月

如按日份表的表名如:

sys_recordtips20200601,sys_recordtips20200602.。。。

表名为sys_recordtips 后面数字为年月日

public Object XNGetTimeTableSQLPageRecordVar(string SQLString,DateTime tB,DateTime tE,TimeType m_TimeType, int nPageSize, int nPageIndex, out bool bOK, List<Hashtable> list, List<OneDB> m_CallDBList = null)

SQLString:执行的查询SQL语句

tB:开始时间

tE:结束时间

m_TimeType:表的时间分割类型

nPageSize:分页大小

nPageIndex:第几页(从1开始)

jsonfield:json字段名称

bOK:返回是否执行成功

list:SQL参数数组

m_CallDBList:作用的数据库节点,为空时将分析SQLString或得需要执行的节点

表的时间分割类型如下

public enum TimeType { Year, Month, Day };

九、执行一条时间表SQL(默认时间字段为createtime),

public bool XNActTimeTableSQLVar(string SQLString, DateTime tB, DateTime tE, TimeType m_TimeType, out int nCnt, List<Hashtable> list, bool bTransaction = true)

SQLString:执行的查询SQL语句

tB:开始时间

tE:结束时间

m_TimeType:表的时间分割类型

nCnt:返回影响的行数

bTransaction:是否使用事务,默认使用事务

十、初始化数据库引擎

static public bool InitDBEngine(string NodeName, string NodeType, string sDBString = null, string sDBType = null)

NodeName:服务节点名称也就是web.config众配置的<add key="P2P服务名" value="WEB102" />

NodeType:默认“WEB“

下集将继续介绍框架基类常用类库

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页