zoukankan      html  css  js  c++  java
  • ADO.NET基础02(语句参数化,配置文件,DataSet与DataTable)

    ADO.NET连接池

    ado.net默认启用了连接池
    *如何清空连接池?Connection的静态方法ClearAllPools()、 ClearPool()


    Ado.net连接池使用总结:
    1.第一次打开连接会创建一个连接对象
    2.当这个连接关闭时(调用Close()方法时)会将当前那个连接对象放入池中
    3.下一个连接对象,如果连接字符串与池中现有连接对象的连接字符串完全一致,则会使用池中的现有连接,而不会重新创建一个
    4.只有对象调用Close(),的时候才会放入池中,如果一个连接对象一直在使用,则下次再创建一个连接对象发现池中没有,也会再创建一个新连接对象
    5.在池中的连接对象,如果过一段时间没有被访问则自动销毁
    6.使用建议:尽量晚打开,尽量早关闭


    语句参数化

    SQL注入漏洞攻击:构造恶意的Password:hello' or 1=1 --

    防范注入漏洞攻击的方法:不使用SQL语句拼接,通过参数赋值


    查询参数

    SQL语句使用@UserName表示“此处用参数代替”,向SqlCommand的Parameters中添加参数
    cmd.CommandText = "select * from [user] where uUserName=@UserName and uPwd=@Password";
    cmd.Parameters.Add(new SqlParameter(“@ UserName ","admin"));
    cmd.Parameters.Add(new SqlParameter(“@ Password ",password));

    参数在SQLServer内部不是简单的字符串替换,SQLServer直接用添加的值进行数据比较,因此不会有注入漏洞攻击。(带参数的sql语句内部是调用了存储过程)

    SQL Server仅支持已命名参数@arg1,而Oledb、Odbc仅支持通用参数标记(?),不同数据提供程序对参数的写法可能不同。


    配置文件

    将连接字符串写在代码中的缺点:多次重复,违反了DRY(Don't Repeat Yourself)原则;如果要修改连接字符串就要修改代码。将连接字符串写在App.Config中:
    添加App.config文件(文件名不能改):添加→新建项→常规→应用程序配置文件。App.config是.Net的通用配置文件,在ASP.Net中也能同样使用
    在App.config中添加connectionStrings段,添加一个add项,用name属性起一个名字(比如DbConnStr),connectionString属性指定连接字符串
    在“引用”节点上点右键“添加引用”,找到System.configuration。不是所有.Net中的类都能直接调用,类所在的Assembly要被添加到项目的引用中才可以
    ConfigurationManager.ConnectionStrings[" DbConnStr "].ConnectionString得到连接字符串
    如何在部署的程序中修改配置:直接编辑配置文件即可
    注意事项:在app.config配置文件中写连接字符串的时候不需要要加转义符。例如:Data Source=.SQLEXPRESS 即可,不需要写成Data Source=.\SQLEXPRESS

    空值处理说明:进行空值判断,使用DBNull.Value


    DataSet与DataTable

    这是Ado.net的第二大组件,用于断开连接时的数据操作
    DataSet:存在于内存中的临时数据库,数据集
    DataTable:临时表
    为临时数据库创建表,并添加到临时数据库中:ds.Tables.Add(dt);
    为表中创建列DataColumn:需要指定列名、列数据类型:dt.Columns.Add(dc1);
    增加行数据:dt.Rows.Add(...)//如果有自动增长列,则这么写就不正确了
    DataRow dr=dt.NewRow();
    dr[int]或dr[string]访问行中的某列







  • 相关阅读:
    【其他】parallels Desktop解决无法压缩硬盘的问题
    【读书笔记】《互联网企业安全高级指南》1-5
    【漏洞复现】SMBLoris windows拒绝服务漏洞
    【编程开发】macOS下配置scapy环境
    C#异常处理经验(原则与方法)
    EntityFramework linq 多条件查询,不定条件查询
    C#制作、打包、签名、发布Activex全过程
    ZPL语言完成条形码的打印
    Linux环境下MySql安装和常见问题的解决
    lrzsz——一款好用的文件互传工具
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193674.html
Copyright © 2011-2022 走看看