C知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。

C知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。哈喽,你好啊,我是雷工!前边学习了登录窗体的实现,接下来接着学习使用带参数的SQL语句编程添加账号的方法。以下为学习笔记。01 非带参数方法在DAL数据访问层编写AccountServer.cs类代码。

大家好,欢迎来到IT知识分享网。

哈喽,你好啊,我是雷工!

前边学习了登录窗体的实现,接下来接着学习使用带参数的SQL语句编程添加账号的方法。

以下为学习笔记。

C知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。

01 非带参数方法

在DAL数据访问层编写AccountServer.cs类代码。

按照前面的练习,写法如下:

public int AddAccount(Account account) { //定义SQL语句 string sql = "insert into Account(AccountName,AccountContent,originality,TypeId)"; sql += #34;values('{account.AccountName}','{account.AccountContent}','{account.originality}','{account.TypeId}')"; //执行SQL语句 return SQLHelper.Update(sql); }

该写法存在两个问题:

问题1:单引号使用起来比较麻烦;

问题2:该写法存在注入式攻击的风险;

为解决注入式攻击问题,微软有两个解决方案:

方案1:使用带参数的SQL语句;

方案2:使用存储过程方式;

C知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。

02 使用带参数语句

接下来将上述方法的写法修改为带参数的SQL语句写法;

方法代码为:

public int AddAccount(Account account) { //定义SQL语句 string sql = "insert into Account(AccountName,AccountContent,originality,TypeId)"; sql += "values(@AccountName,@AccountContent,@originality,@TypeId)"; //封装SQL语句中的参数 SqlParameter[] param = new SqlParameter[] { new SqlParameter("@AccountName",account.AccountName), new SqlParameter("@AccountContent",account.AccountContent), new SqlParameter("@originality",account.originality), new SqlParameter("@TypeId",account.TypeId), }; //执行带参数的SQL语句 return SQLHelper.Update(sql,param); }

使用该写法需要调整下通用数据访问类SQLHelper中Update的写法。

C知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。

03 优化Update方法

由于上边使用带参数的SQL语句编程,添加了数组参数param,所以优化思路是在原方法的基础上增加SqlParameter[]param参数,

且为了兼容无该参数的也能使用该方法,给该参数赋值null,

然后在方法内进行if判断即可。

优化后的方法代码如下:

/// <summary> /// 执行增删改操作 /// </summary> /// <param name="sql">普通sql语句或带参数的SQL语句</param> /// <param name="param">参数数组</param> /// <returns></returns> /// <exception cref="Exception"></exception> public static int Update(string sql, SqlParameter[]param=null) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql,conn); if(param!=null) { cmd.Parameters.Add(param); } try { conn.Open(); return cmd.ExecuteNonQuery(); } catch (Exception ex) { //可以在这个地方捕获ex对象的相关信息,然后保存到日志文件中 throw new Exception("执行public static int Update(string sql)发生异常:" + ex.Message); } finally { conn.Close(); } }
C知识|账号管理系统:使用带参数的SQL语句编程添加账号的方法。

04 后记

以上就是使用带参数的SQL语句编写添加账号的方法的学习笔记,该方法实用性强,

且考虑了SQL语句防注入攻击的风险,实际项目中可直接复制使用。

接下来学习账号管理系统,添加账号功能UI层的内容,有感兴趣的C#爱好者可以围观,一起学习进步。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/87549.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信