蠢且懒的代码

简介: 蠢且懒的代码

看了些C#编程和MS SQL SERVER的书,学了些相关知识,就开始上手接了个项目,首期编写了一个登录程序,某按钮调用 UserLogon 单击事件,查询用户表中与输入的用户名密码是否一致,成功则登录,失败则提示,代码如下:

void UserLogon(Object sender,EventArgs e)

{

  try

  {

    string _sql="select * from users where uid="+x_uid.Text+" and password="+x_pwd.Text;  

    SqlConnection Conn =   new SqlConnection(ConfigurationSettings.AppSettings["J"]);

    SqlCommand   comm=new SqlCommand(_sql,myConnection);  

    myConnection.Open();

     SqlDataReader myDr;

     myDr = comm.ExecuteReader();

     if(myDr.Read()){

       myDr.Close();

        Session[“username”]=myDr[“u”].ToString();

       Response.Write("登录成功!");

       Response.Redirect("/main.aspx");

     }

     else{

       Response.Write("非法登录!");

     }

 }

 catch(Exception ex){

       Response.Write(ex.Message);

 }

 finally{

     myConnection.Close();

 }

}

首先提示了数据源已关闭的提示(问题出现在了粗心大意):

if(myDr.Read()){

      myDr.Close();

        Session[“username”]=myDr[“u”].ToString();

       Response.Write("登录成功!");

     }

更改后,感觉大吉。过两天,甲方的技术人员电话过来,你们可以尝试任意密码登录。那时只感觉书上写的范例肯定是正确的标准的,岂不知那只是范例,不要教条。该段代码引发了很多风险和问题:

   (1)严重风险:由字符串拼接SQL语句,输入某些语句,任意条件即可登录,并引发SQL注入的巨大风险。

   (2)性能问题:全程 try 语句,动辄 select * from ...,就是因为懒,则以牺牲性能为代价。

   (3)无法执行的语句:登录成功后的提示语不会进行显示。

   (4)不友好的提示信息,看似简单,但用户体验度非常的差。

所以,应用设计即是一门技术,也是一门艺术,虽然BUG是我们心中永远的痛,但编写健壮、友好、稳定、高性能的应用也是我们永远不变的追求!


相关文章
|
11月前
|
数据库
我又写了一堆烂代码
“我又写了一堆烂代码!” 这句话我经常对自己说,目的是为了督促自己不断地思考所写的代码是否足够可靠。
40 0
|
机器学习/深度学习 算法 C++
没什么了。
没什么了。
|
算法 C++
没什么。。。。
没什么。。。。
|
XML JSON JavaScript
2021年的几次面试让我死磕了17道JS手写题!(下)
2021年的几次面试让我死磕了17道JS手写题!
|
JavaScript 前端开发
2021年的几次面试让我死磕了17道JS手写题!(上)
2021年的几次面试让我死磕了17道JS手写题!
108 0
|
编解码 前端开发 程序员
为啥只跟着视频敲代码学不好编程?
为啥只跟着视频敲代码学不好编程?
304 1
|
SQL 存储 监控
聊聊那些年遇到过的奇葩代码
无论是开发新需求还是维护旧平台,在工作的过程中我们都会接触到各种样式的代码,有时候会碰到一些优秀的代码心中不免肃然起敬,但是更多的时候我们会遇到很多奇葩代码,有的时候骂骂咧咧的吐槽一段奇葩代码后定睛一看作者,居然是几个月以前自己的写的,心中难免浮现曹操的那句名言:不可能,绝对不可能。
聊聊那些年遇到过的奇葩代码
|
编译器
为何代码没错,却出不来结果,你可能...
为何代码没错,却出不来结果,你可能...
111 0
为何代码没错,却出不来结果,你可能...
|
Ubuntu 计算机视觉 Python
摄像机标定--很懒的方法
百度上找半天各种标定的方法,然而复制代码下来各种报错,或者就是没讲清楚到底怎么操作。 后来我突然想到opencv自带的例程说不到也有标定的代码,很幸运在sample/python/下找到了calibrate.py这个程序。
|
XML 缓存 Java
你还在手写 CRUD?试试 MybatisGenerator,再也不用加班了!
你还在手写 CRUD?试试 MybatisGenerator,再也不用加班了!
131 0
你还在手写 CRUD?试试 MybatisGenerator,再也不用加班了!