软件开发案例参考

前言:基于平台现有需求进行新功能模块开发与实现,以下内容为部分源码解析,仅提供一些思路参考,不予以客观指导,毕竟条条大路通罗马嘛;

语言:C#

工具:visual studio 2017/visual studio code

框架:.NET formwork 4.5

应用:外部API

准备工作:

        新建文件-visual C#-.net fromwork 选择4.5版本

1.继承服务插件几类:AbstractOperationServicePlugIn

2.引用,创建事件事务执行后重写方法;

public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
        {
            base.AfterExecuteOperationTransaction(e);
}

3.API准备,

4.创建字符串列表,使用StreamReader方法,从指定文件中读取数据

List<string> objects = new List<string>();
using (StreamReader reader = new StreamReader(@"your_path"))
            {
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();
                    
                    objects.Add(line);
                }
            }

 5.根据自定义文本中的内容进行遍历后打印,结合需求;

 Console.WriteLine(objects.First().ToString());
 Console.WriteLine(objects.Last().ToString());

6.建立客户端连接,登录

your_client client = new your_client(objects.First().ToString());
//此处登录信息方法ValidateLogin中参数以及参数类型结合个人所设
var loginResult = client.ValidateLogin("id", "user", objects.Last().ToString(), language);
var resultType = JObject.Parse(loginResult)["LoginResultType"].Value<int>();

7.获取登录结果之后,如果需要API数据库进行操作可参考一下内容同,如不需要则自行跳过;

 if (resultType == 1)
            {
//验证是否登录成功,登录成功以逗号进行分割
                var ids = string.Join(",",e.DataEntitys.Select(o => o[0]));

                string viewsql = string.Format("/dialect/--dialect为注释,数据库使用的事SQLserver,此处书写sql语句且将获取登录类型信息作为sql语句的最后条件进行查询",ids);
//调用此方法执行sql语句,获取结果存储在MAUCOL集合中,this.context连接上下文
//也可自定义方法是使用context,(public void 方法名(Context ctx){}),将this.context变更ctx即可
                DynamicObjectCollection MAUCOL = DbUtils.ExecuteDynamicObject(this.Context, viewsql);

8.在此假设对数据库中查询出来的数据为A\B\C\D\E,对此进行操作,思路为拆分信息后进行物理自动重组形成新的逻辑内容;

 if(MAUCOL != null && MAUCOL.Count > 0)
                {
//判断是否有数据进行操作,遍历,取出所需要的数据进行下一步操作;
                    for(int x = 0; x < MAUCOL.Count; x++)
                    {
//获取各个字段;
                        string a = Convert.ToString(MAUCOL[x]["A"]);
                        string b= Convert.ToString(MAUCOL[x]["B"]);
                        string c= Convert.ToString(MAUCOL[x]["C"]);
                        string d= Convert.ToString(MAUCOL[x]["D"]);
                        string e= Convert.ToString(MAUCOL[x]["E"]);

9.因为是需要将原有字段拆分后重组,所以需要查询在数据库对应表中是否存在,不存在写进去;

string aa = string.Format("/dialect/sql语句, 根据查询字段作为选定条件进行查询);
                        DynamicObjectCollection aasql = DbUtils.ExecuteDynamicObject(this.Context,aa);

10.使用正则进行拆分

 if(aasql.Count == 0)
                        {
                            string[] vs = Regex.Split(需要拆分的字段,"/",RegexOptions.IgnoreCase);
//分割以“\”
                            if(vs.Length >= 3)
                            {
//如果分割的长度大于4,那么分别取出
                                string aaa = vs[0];
                                string bbb = vs[1];
                                string ccc = vs[2];
                                string ddd = vs[3];
                                string eee = vs[4];

11.根据拆分出来的字段条件进行构建sql查询语气分别在数据库对应的表中查询出所需要的信息,因为查询拆分出五个信息 所以此处需要构建出五个语句在这里我只书写一个作为参考;

 string bb = string.Format("/dialect/以vs[0]第一个拆分字段为查询条件的sql语句'", vs[0]);
                                DynamicObjectCollection bbsql = DbUtils.ExecuteDynamicObject(this.Context,bb);
//此处需要对应书写其五个 分别为bbccddee,自定义变量名称即可

12.重组

        使用json进行

if (vs[0] == "拆分字段")
 {
    JObject jObject = new JObject();
    JObject modelobject = new JObject();

    modelobject.Add("数据库表A对应字段", aa);

    modelobject.Add("数据库表B对应字段", bb);

    modelobject.Add("数据库表C对应字段", cc);

    modelobject.Add("数据库表D对应字段", dd);

    modelobject.Add("数据库表E对应字段", ee);

//创建json数据,根据前边拆分的字段条件进行查询,维护在数据表中
    
    JArray entryarray = new JArray(); 

//
string AAA= string.Format("/dialect/以aabbccddee,作为查询条件的sql语句", aa,bb,cc,dd,ee);
                                                        DynamicObjectCollection AAAsql = DbUtils.ExecuteDynamicObject(this.Context,AA);

13.如果上边没有问题执行后会将数据写入进去,开始遍历写入具体信息数据;

for (int i = 0; i < AAsql.Count; i++)
     {
            JObject entryobject = new JObject();

             如需类型转换 F = Convert.如需类型转换(AAsql[i]["数据库字段"]);

             如需类型转换G = Convert.如需类型转换(AAsql[i]["数据库字段"]);

             如需类型转换H = Convert.如需类型转换(AAsql[i]["数据库字段"]);

             entryobject.Add("数据库字段1", F);

             entryobject.Add("数据库字段2 ", G);

             entryobject.Add("数据库字段2 ", H);

             JObject wjobject = new JObject();

             wjobject.Add("对应数据表结构字段与添加的字段一直的字段", 需要添加的字段);

             entryobject.Add("条件字段 ", wjobject);

             JObject yObject = new JObject();
             yObject.Add("对应数据表结构字段与添加的字段一直的字段2", 需要条件的第二个字段);

             JObject cjobject = new JObject();

             cjobject.Add("对应数据表结构字段与添加的字段一直的字段3", "");

			 //以此类推

              JObject fzjobject = new JObject();

              fzjobject.Add("对应数据表结构字段与添加的字段一直的字段4", yjObject);

              fzjobject.Add("对应数据表结构字段与添加的字段一直的字段5", cjobject);

              entryobject.Add("对应数据表结构字段与添加的字段一直的字段6", fzjobject);

                                                                entryarray.Add(entryobject);
                                                            }

14.创建保存方法向客户端

modelobject.Add("对应需要添加的类型字段 ", entryarray);
    jObject.Add("类型字段", modelobject);

	//构建SAVE提交方法客户端
	string SSAVE = jObject.ToString();
    var resultJsons = client.Save("数据表中头字段标识", jObject.ToString());

15.提交

string submitSW = string.Format("/*dialect*/sql语句以提交字段进行条件查询的", 字段);
   DynamicObjectCollection fidsql1 = DbUtils.ExecuteDynamicObject(this.Context, submitSW);
   if (fidsql1 != null && fidsql1.Count > 0)
    {
        for (int i = 0; i < fidsql1.Count; i++)
        {
            Int32 fid = Convert.ToInt32(fidsql1[i]["fid"]);
            JObject submitjobject = new JObject();
            submitjobject.Add("Ids", fid);
            var resultJsonss = client.Submit("数据表中头字段标识", submitjobject.ToString());

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/764153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WGAN(Wassertein GAN)

WGAN E x ∼ P g [ log ⁡ ( 1 − D ( x ) ) ] E x ∼ P g [ − log ⁡ D ( x ) ] \begin{aligned} & \mathbb{E}_{x \sim P_g}[\log (1-D(x))] \\ & \mathbb{E}_{x \sim P_g}[-\log D(x)] \end{aligned} ​Ex∼Pg​​[log(1−D(x))]Ex∼Pg​​[−logD(x)]​ 原始 GAN …

T4打卡 学习笔记

所用环境 ● 语言环境&#xff1a;Python3.11 ● 编译器&#xff1a;jupyter notebook ● 深度学习框架&#xff1a;TensorFlow2.16.1 ● 显卡&#xff08;GPU&#xff09;&#xff1a;NVIDIA GeForce RTX 2070 设置GPU from tensorflow import keras from tensorflow.keras…

uniapp学习笔记

uniapp官网地址&#xff1a;https://uniapp.dcloud.net.cn/ 学习源码&#xff1a;https://gitee.com/qingnian8/uniapp-ling_project.git 颜色网址&#xff1a;https://colordrop.io/ uniapp中如何获取导航中的路由信息&#xff1f; onLoad(e){console.log(e)console.log(e.w…

探索IT世界的第一步:高考后的暑期学习指南

目录 前言1. IT领域概述1.1 IT领域的发展与现状1.2 IT领域的主要分支1.2.1 软件开发1.2.2 数据科学1.2.3 网络与安全1.2.4 系统与运维 2. 学习路线图2.1 基础知识的学习2.1.1 编程语言2.1.2 数据结构与算法 2.2 实战项目的实践2.2.1 个人项目2.2.2 团队项目 2.3 学习资源的利用…

Vue入门-如何创建一个Vue实例

创建一个一个Vue实例总共分为四步&#xff1a; 1.创建一个容器 2.引包&#xff1a;地址栏搜索v2.cn.vuejs.org这是vue2的官网地址&#xff0c;把2去掉就是vue3的官网地址&#xff0c;我们的包分为开发版本和生产版本&#xff0c;开发版本包含完整的警告和调试模式生产版本删除…

Axure原型工具速览:一分钟带你领略设计魅力!

Axure曾经成为产品经理必备的原型设计工具&#xff0c;甚至被认为是专门为产品经理设计的工具。但事实上&#xff0c;软件Axure的应用场景并不局限于产品经理构建产品原型。UI/UX设计师还可以使用Axure软件构件应用APP原型&#xff0c;网页设计师也可以使用Axure软件构件网站架…

Python中的并发编程(5)PyQt 多线程

PyQt 多线程 1 卡住的计时器 我们定义了一个计时器&#xff0c;每秒钟更新一次显示的数字。此外我们定义了一个耗时5秒的任务oh_no&#xff0c;和按钮“危险”绑定。 当我们点击“危险”按钮时&#xff0c;程序去执行oh_no&#xff0c;导致显示停止更新了。 import sys im…

类和对象【上】【C++】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

泰勒展开式在Android系统或应用程序中的应用

泰勒展开式在Android系统或应用程序中的应用 引言 泰勒展开式(Taylor Series)是高等数学中的一个重要工具,它允许我们将一个复杂函数表示为一个无穷多项式的和,从而近似计算函数值。在Android开发中,理解和应用泰勒展开式有助于优化涉及复杂数值计算的算法,提高应用程序…

感动的短视频:成都柏煜文化传媒有限公司

感动的短视频&#xff1a;瞬间触动心灵的温暖力量 在这个快节奏、高压力的时代&#xff0c;我们常常在忙碌与喧嚣中穿梭&#xff0c;心灵深处那份最纯粹的感动似乎变得愈发珍贵而难得。然而&#xff0c;就在这样一个数字化盛行的今天&#xff0c;短视频以其独特的魅力&#xf…

OpenSearch的演进与语义检索技术革新

周末听了一场关于Open Search的技术分析&#xff0c;整理如下&#xff0c;供大家参考。OpenSearch&#xff0c;作为ElasticSearch的一个分支&#xff0c;不仅继承了其强大的搜索和分析能力&#xff0c;更在开源社区的驱动下&#xff0c;不断演进和创新。本文将介绍OpenSearch的…

leetcode-21-回溯-全排列及其去重

一、[46]全排列 给定一个 没有重复 数字的序列&#xff0c;返回其所有可能的全排列。 示例: 输入: [1,2,3]输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 其中&#xff0c;不需要使用startIndex used数组&#xff0c;其实就是记录此时path里都有哪些元素…

第十一章 Nest 创建动态模块

在 NestJS 中&#xff0c;动态模块允许在运行时动态添加和删除模块。这对于创建可扩展的和灵活的应用程序非常有用。 新建一个项目&#xff1a; nest new dynamic-module -p npm创建一个crud的模块&#xff1a; nest g resource test启动项目 浏览器访问 可以发现模块生效了 …

Python酷库之旅-第三方库openpyxl(20)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式…

【技术杂谈】如何访问Github | 解决无法连接Github的问题

访问网页的过程 什么是域名&#xff1f;什么是IP地址&#xff1f;- 域名是网站的名称。 - IP地址是服务器在互联网上的逻辑地址。域名往往是固定的&#xff0c;但是IP地址很有可能是会改变的。计算机通过Host文件检查本地缓存是否有域名对应IP地址 Host文件路径 C:\Windows\Sy…

6.The hardest part about learing hard things(学一件难的事,难在哪里)

I’ve been recording a lot of podcast interviews for my upcoming book, Ultralearning.One of the reurring themes I’ve noticed in our conversations is that how people feel about learning is the overwhelming cause of the results they experience. 我为我的新书…

解决VSCode无法用ssh连接远程服务器的问题

原因&#xff1a; 因为windows自带的ssh无法连接远程服务器&#xff0c;需要用git底下的ssh.exe。 搜了很久&#xff0c;试过很多方法&#xff0c;包括替换掉环境变量中的ssh&#xff0c;但是都无效&#xff0c;最后发现是要在VSCode中配置需要使用哪个ssh.exe。 步骤&#…

11.优化算法之栈

1.删除字符串中的所有相邻重复项 可以用数组模拟栈结构 class Solution {public String removeDuplicates(String s) {if(s.length()<1){return s;}StringBuffer retnew StringBuffer();for(int i0;i<s.length();i){if(ret.length()<1){ret.append(s.charAt(i));}els…

字符编码-unicode码表

unicode在线码表&#xff1a;https://www.tamasoft.co.jp/en/general-info/unicode.html Unicode Table

Stable Diffusion中放大图像的3种方法

前言 要执行 ControlNet tile upscale&#xff1a; 您想使用 Stable Diffusion 创建包含大量细节的大型图像吗&#xff1f;您将需要使用升频器。在本文中&#xff0c;您将学习 3 种放大图像的方法。 人工智能升级器标清高档ControlNet瓷砖高档 您将看到比较并了解这些方法的优…