asp.net框架有几种(ASP.NET原创框架七-重要类库介绍)
ASP.NET原创框架七-重要类库介绍
关于数据库的访问类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
数据库节点的配置
中心库的表一般以center_为前缀
应用表的生成
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