牛腩--SQLHelper

今天看了牛腩,整体看下来,感觉理解了很多代码为什么这么用,为什么要通过参数来传值或址,以下是总结的一些小知识,仅供参考

  • SqlConnection()参数是传数据库配置的字符串,如下:
server=DESKTOP-RN1CDVF;database=newssystem;uid=sa;pwd=123
  • SqlCommand()参数是需要执行的语句(增删改)和SqlConnection类型的数据
SqlCommand cmd = new SqlCommand(cmdText, GetConn());
  • ExecuteNonQuery返回受影响行数
int res = cmd.ExecuteNonQuery();
  • SqlCommand cmd.Paramenters.AddRange(SqlParamter[])---括号里面添加的是SqlParamter类型的数组,可以通过外面传参数,传进来

public DataTable ExecuteQuery(string cmdtext, SqlParameter[] paras, CommandType ct)
        {
            cmd.Parameters.AddRange(paras);
        }
  • SqlCommand cmd.CommandType有三种,只说两种:CommandType.Text和CommandType.StoredProcedure,第一种执行SQL文本命令,第一种执行存储过程的命令,再调用的时候声明

  • 从数据库中读取出数据赋值给SqlDataReader类的对象

SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)

一、将open和close提取出来

第一种:(保存错误都会执行finally里面的代码)

public int ExecuteNonQuery(string cmdText, CommandType ct)
        {
            int res;
            try
            {
                SqlCommand cmd = new SqlCommand(cmdText, GetConn());
                cmd.CommandType = ct;
                res = cmd.ExecuteNonQuery();
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            //连接语句
            return res;
        }

第二种:(执行到return,就会释放资源)

public int ExecuteNonQuery(string cmdtext, SqlParameter[] paras, CommandType ct)
        {
            int res;
            using (cmd = new SqlCommand(cmdtext, GetConn()))
            {
                cmd.CommandType = ct;
                cmd.Parameters.AddRange(paras);
                res = cmd.ExecuteNonQuery();
            }
            return res;
        }

 

二、修改数据库连接的字符串

将其添加到配置文件中,如

  <appSettings/>
  <connectionStrings>
    <add name="connStr" connectionString ="server=DESKTOP-RN1CDVF;database=newssystem;uid=sa;pwd=123"/>
  </connectionStrings>

接下来我们要引用

using System.Configuration;

然后再SQLHlper构造函数中写

string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

 

三、如何避免SQL的注入

上图就是注入,因为拼接字符引起,黑客可以通过超过你的设置的数据类型长度可以看到漏洞,如果你长度是20,可以通过上面的方法超过长度

如何做:

将增删改的数据改为@XXX,设置为实体的属性,由实体的属性进行赋值。

发布了108 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/lclcsdnblink/article/details/100810038