今天给各位分享C#知识账户管理系统:如何使用带参数的SQL语句以编程方式添加账户的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
以下为学习笔记。
01 非带参数方法
在DAL数据访问层编写AccountServer.cs类代码。
根据之前的练习,写成如下:
public int AddAccount(Account account){ //定义SQL语句字符串sql=’insert into Account(AccountName,AccountContent,originality,TypeId)’; sql +=#34;values(‘{account.AccountName}’,'{account.AccountContent}’,'{account.originality}’,'{account.TypeId}’)’; //执行SQL语句return SQLHelper.Update(sql);} 这种写法有两个问题:
问题一:单引号使用起来比较麻烦;
问题2:这种写法存在注入攻击的风险;
为了解决注入攻击的问题,微软有两种解决方案:
方案一:使用带参数的SQL语句;
方案2:使用存储过程方法;
02 使用带参数语句
接下来将上述方法的写法修改为带参数的SQL语句的写法;
方法代码为:
public int AddAccount(Account account){ //定义SQL语句字符串sql=’insert into Account(AccountName,AccountContent,originality,TypeId)’; sql +=’值(@AccountName,@AccountContent,@originality,@TypeId)’ ; //封装SQL语句中的参数SqlParameter[] param=new SqlParameter[] {new SqlParameter(‘@AccountName’,account.AccountName),new SqlParameter(‘@AccountContent’,account.AccountContent),new SqlParameter(‘@原创性’,account.originality),new SqlParameter(‘@TypeId’,account.TypeId), }; //执行带参数的SQL语句return SQLHelper.Update(sql,param);}使用这种写法需要调整一般数据访问类SQLHelper中Update的写法。
03 优化Update方法
由于上面使用带参数的SQL语句进行编程,并且增加了数组参数param,因此优化思路是在原有方法的基础上增加SqlParameter[]param参数。
并且为了兼容性,该方法也可以不使用该参数,并将该参数赋值为null。
然后在方法内进行if判断即可。
优化后的方法代码如下:
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/121801.html
用户评论
空谷幽兰
这篇文章讲解的很详细!让我终于明白如何用带参数的sql语句来添加账号了。之前一直搞不明白怎么避免注入问题,现在看来只要注意使用参数化查询就OK拉!感谢分享
有10位网友表示赞同!
不离我
这个C#知识账号管理系统感觉很棒啊!尤其是对于新手程序员来说,这篇文章简直是教科书级教程了,把每个步骤都清晰描述出来,真希望有更多类似的文章分享!
有13位网友表示赞同!
╭摇划花蜜的午后
话说,这篇博文说的代码示例都是基于什么数据库框架的? 我用的是Entity Framework, 这两种框架语法好像不太一样…
有18位网友表示赞同!
繁华若梦
C# 账号管理系统这个话题一直困扰我好久,总觉得自己的实现方法不够安全。终于有人分享了带参数SQL语句的使用方法,这种方式确实避免了注入风险,赞!
有5位网友表示赞同!
陌颜
我也试着自己去写C#的管理系统,遇到的问题太多了,这篇文章简直是救命啊!尤其是在使用SQL语句的时候,感觉很有效率!
有11位网友表示赞同!
留我一人
学习一下这个带参数的SQL语句方法吧!虽然之前一直在用其他的方式管理账号,不过这种方法更安全也更方便一些,以后我估计会经常用到…
有11位网友表示赞同!
_心抽搐到严重畸形っ°
这篇文章太棒了!我一直想找一个C#的账号管理系统的教程,没想到找到了这么详细的文章。而且讲解方法都很清晰易懂,非常感谢作者分享!
有8位网友表示赞同!
回忆未来
感觉这种带参数SQL语句的编程方式还是比较复杂一些,对于新手来说学习成本可能比较高…
有17位网友表示赞同!
一样剩余
看了这篇博文后,我更加明确了如何设计自己的C#账号管理系统。 真是受益匪浅!
有17位网友表示赞同!
暮染轻纱
虽然这个C#知识账号管理系统的文章写得不错,但是我觉得系统整体的架构的设计还需要进一步完善。 建议作者可以考虑添加更多模块化和可复用的功能代码。
有18位网友表示赞同!
安陌醉生
个人觉得带参数SQL语句确实更安全一些,但也需要注意数据类型匹配的问题,不然会报错……
有10位网友表示赞同!
寻鱼水之欢
我想问问作者,这个C#知识账号管理系统是否支持多平台? 我想在Linux环境下测试一下。
有12位网友表示赞同!
無極卍盜
其实使用ORM工具(比如 Entity Framework)操作数据库已经非常方便了,这种带参数SQL语句的方法感觉有点儿太ローレベル…
有10位网友表示赞同!
ゞ香草可樂ゞ草莓布丁
这篇文章真的帮到我了!我之前也遇到了账号管理系统的开发问题,现在终于找到了解决方案! 感谢作者的分享!
有10位网友表示赞同!
拥菢过后只剰凄凉
这个C#知识账号管理系统的架构设计比较简单,可以根据实际需求进行扩展和修改。不过对于大型系统来说,还需要考虑更多的安全性和性能方面的优化。
有11位网友表示赞同!
裸睡の鱼
这篇文章虽然讲解了代码实现过程,但是没有太多关于数据库设计的说明,我觉得对于初学者来说还不够全面。
有6位网友表示赞同!
拉扯
我更倾向于使用NoSQL数据库来开发账号管理系统,比如MongoDB,这样可以更加灵活和高效地存储用户数据。
有18位网友表示赞同!
病态的妖孽
C#语言本身就很灵活了,搭配这种带参数SQL语句编程方法,开发账号管理系统效率更高,安全性更好!
有19位网友表示赞同!
昂贵的背影
我希望作者后续能分享一些关于安全防御、数据库优化以及系统部署等方面的知识,这样更能帮助我们全面理解和构建一个专业的C#账号管理系统。
有9位网友表示赞同!