欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

牛腩--SQLHelper

发布时间:2023/12/20 数据库 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 牛腩--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,设置为实体的属性,由实体的属性进行赋值。

 

总结

以上是生活随笔为你收集整理的牛腩--SQLHelper的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。