.net多层结构 sql注入

1,功能单一型
解释:比如一个软件是由
界面部分 User Interface+ 代码逻辑 Business Logic Layer+ 数据库部分 Data Access Layer
组成。
但是为什么一个常见的软件要搞得这么复杂?为什么不能把以上三种融为一体。这样不就避免了
【中间件】的学习成本了?
但是界面有winform html 这种标准极致的,和用户交互的;代码逻辑有许多编程语言来实现对数据完整性的约束;
数据库可以连接界面与数据。
而这些东西都在特定的方面做到极致,都有专注自己擅长的领域。它们组合起来就得到了完美的软件。即功能单一性。

大型企业组织结构的管理模式的优点:容错率高,可替换性强,上限高。
缺点:不灵活,效率低,速度慢。小型企业反之。

它借鉴企业组织结构的管理模式,实现的一种多人团队协作开发模式。

而多层结构与软件的组成结构有很多相似点。每个部分做好每个部分的事情,相互联系,一个地方出错,可以精确定位到
bug的地方,里面很多伪方法,各司其责,互不干扰,实现功能。

一个解决方案里添加了多个项目,而每个项目就做各自的事情,每个项目互相引用通过伪方法各自传值,进行数据的交流。

比如登录
1,界面 UI 2,判断账号密码 BLL 3,匹配数据库里的账号密码 DAL
UI界面需要用窗体,获得值就行了,再传给BLL层。
BLL层进行非空判断,再通过伪方法给 DAL层
DAL层进行匹配,得到返回数据,给UI层。

引用UI引用BLL,BLL引用DAL,DAL再引用ado.net 的类库。


```csharp
//下面是sql注入的一种,这种sql写法是有问题的,可以破解登录。
select count(*) from admin where id = '' and pwd = '     ' or '1' = '1    'public class DBHelper1{public static object GetData(string sql,SqlParameter[] paras){string address = "Data Source = .; Initial Catalog = MySchool; Integrated Security = True";using (SqlConnection con = new SqlConnection(address)){SqlCommand cmd = new SqlCommand(sql,con);con.Open();//参数化技术,取代字符串拼接cmd.Parameters.AddRange(paras);return cmd.ExecuteScalar();}}}private void button2_Click(object sender, EventArgs e){string sql = "select * from admin where loginid = @id and loginpwd = @pwd";SqlParameter[] paras = new SqlParameter[] {new SqlParameter("@id",textBox1.Text),new SqlParameter ("@pwd",textBox2.Text)};int i = Convert.ToInt32(DBHelper1.GetData(sql, paras));if (i > 0)MessageBox.Show("验证成功,不会遭到sql注入!");}
//缺点是不能看到 参数 要再数据库 sql server profiler看

其它层,帮助层,暂时叫实体层。ENTITY
对其它三层起辅助作用的层。
比如设计一个方法,如果参数很多,就很复杂,但是把这些参数,放到一个类,把这个类放入实体层。
这时参数就是一个object 的类了,返回值可以是泛型集合。
这样,提高了代码的复用率了。

写在最后:

用多层结构开发软件的详细步骤
1,对数据表进行需求分析,各种业务,想象功能点
2,搭建基本多层结构,正确的让其相互应用
3,针对你的需求分析,设计伪方法
4,实现伪方法和功能

通用的规范标准是十分重要的。
1,一个数据表必须在实体层中存在一个实体类用于对其它层作辅助,传值的载体
2,这个类中有按要求的属性,字段,构造
3,每个层的命名规范 表名-DAL 表名-BLL
4,一个类必须至少5个方法 Get() Get(string id) Update() Add() Delete()
其它的方法灵活变通。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中文字符所占的字节数

本文由广州疯狂软件java培训为你整理: Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时&#xff0c…

leetcode 102 C++AC

leetcode 102 我模仿二叉树的层序遍历的方法,自己写了一个。中间报错了,还特别去看了下这个文章https://blog.csdn.net/weixin_45799835/article/details/105780627 后来发现只是一个小错误,嘻嘻 class Solution { public:int maxDepth(Tree…

.net动态控件的使用(listview ,treeview,tabControl)

对于控件中显示的数据可能是不固定的。如果固定,数据发生了变化,又要重新设计,这样浪费成本,资源。 所以有用代码操作控件,自由度,可控度高。 1,树控件 //把 tv 作为全局变量 , 这是…

1120. Friend Numbers (20)

1120. Friend Numbers (20) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueTwo integers are called "friend numbers" if they share the same sum of their digits, and the sum is their "friend ID". For example, …

泡茶看数据结构-临时(对象设计技术)

一.开场白 第二次《DATA STRUCTURES AND PROBLEM SOVLING WITH C》英文授课,让我产生英文写文章的念头。但是,慢慢开始参合英文吧。一下子写的话,怕写出来博客园首页都不敢收录了。^_^!今天,从课堂和自己下午看总结下,…

分享几个可供学习,休闲的网站

设计的无限可能 http://seeseed.com 包含各种文案,创意短片,各种模板 http://addog.com 微软office plus/ppt 模板之王 http://officeplus.cn 中国数字科技馆 http://cdstm.cn 在线一键抠图 http://remove.bg 全球杂志 http://magazinelib.com 图片…

leetcode 112路径总和

leetcode 112 其实leetcode上的题解和评论都很好的,找题解不用到csdn来,我是想把自己做过的题都记录下来才来写这个 class Solution { public:bool hasPathSum(TreeNode* root,int targetSum) {if(!root) return false;if(root->leftnullptr&&am…

1083. List Grades (25)

1083. List Grades (25) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueGiven a list of N student records with name, ID and grade. You are supposed to sort the records with respect to the grade in non-increasing order, and outp…

1011. World Cup Betting (20)

1011. World Cup Betting (20) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueWith the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excited as the best players from the best teams doing b…

.net 日期总结,用于业务时间查询

//今天是这周的第几天,是个英文星期,可以转换成intstring a DateTime.Now.DayOfWeek.ToString();//今天//MessageBox.Show(Convert.ToInt32(DateTime.Now.DayOfWeek) "");昨天MessageBox.Show(DateTime.Now.AddDays(-1).ToString());//星期…

1042. Shuffling Machine (20)

1042. Shuffling Machine (20) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueShuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid &qu…

leetcode 73 矩阵置零 C++ 两种解法

leetcode 73 两种解法~~&#xff0c;没有一个是我想出来的&#xff0c;哈哈~~ one class Solution { public:void setZeroes(vector<vector<int>>& matrix) {int mmatrix.size(),nmatrix[0].size();bool colfalse,rowfalse;for(int i0;i!m;i){if(!matrix[i][0…

JS第一课

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title></head><body><script>///*1,它可以做什么。a, 动态改变页面的内容和页面外观b,验证表单数据&#xff0c;各大网站的注册验证功能可以通…

排序二叉树

排序二叉树 二叉树&#xff1a;作为基本数据结构的一种&#xff0c;是红黑树&#xff0c;B树等树形结构的基础。而排序二叉树是按照二叉树的结构来组织的。在本文中采用链表结构来创建二叉树。排序二叉树的    基本原理&#xff1a; 排序二叉树是将归并排序的基本思想构建二…

1020. Tree Traversals (25)

1020. Tree Traversals (25) 时间限制400 ms内存限制65536 kB代码长度限制16000 B判题程序Standard作者CHEN, YueSuppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to out…

leetcode 387 C++数组做法

leetcode 387 C数组做法 class Solution { public:int firstUniqChar(string s) {int ns.length();if(n0) return -1;int table[26]{0};for(int i0;i!n;i){table[s[i]-a];}for(int i0;i!n;i){if(table[s[i]-a]1)return i;}return -1;} };END

获取Class对象方式

在java中&#xff0c;每个class都有一个相应的Class对象&#xff0c;当编写好一个类&#xff0c;编译完成后&#xff0c;在生成的.class文件中&#xff0c;就产生一个Class对象&#xff0c;用来表示这个类的类型信息。获得Class实例的三种方式&#xff1a; 1). 利用对象调用get…

前端学习(1002):简洁版滑动下拉菜单问题解决

快速滑动 不停切换 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><scrip…

js bom and dom

以下的代码只是一些小的例子。我画了一张图来总结js大的结构 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><script>//Point 1 delayer and timer (BOM browser Object Model)var delayer;var tim…