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]访问行中的某列

ADO.NET基础02(语句参数化,配置文件,DataSet与DataTable)的更多相关文章

  1. ADO.NET基础02

    查询和操作数据库   要想从数据库中读取多条记录就必须用到Command对象的ExecuteReader()方法,该方法返回一个DataReader对象,通过其对象的程序就可以访问数据库. 基础知识 ...

  2. ADO.NET基础知识学习(SQLCOnnection&SQLCommand&SQLDataReader&SQLDataAdapter&DataSet)

    通过ADO.NET技术,我们可以高效的完成客户端同数据库之间的数据访问操作,便于我们在客户端程序简便高效的访问以及获取数据库中的有用数据,同时也可以对数据库中的数据进行更新,即可以完成客户端与数据库之 ...

  3. 【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter

    1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: ...

  4. 如鹏网学习笔记(六)ADO.Net基础

    ADO.Net基础 一.ADO.Net简介 1,程序要通过SQL语句自动化的操作数据库,必须要用一个类库, 类库要提供execute("insert into ...")/exec ...

  5. ADO.NET基础开发

    ADO.NET是微软新一代.NET数据库的访问架构,ADO是ActiveX Data Objects的缩写.ADO.NET是数据库应用程序和数据源之间沟通的桥梁,主要提供了一个面向对象的数据访问架构, ...

  6. ADO.NET基础03

    数据库和VS的连接,实现数据的同步,让用户的一切信息都可以在数据库中留下记录. ADO.NET基础      它是连接所有数据库的一种特殊的技术,提供对不同的数据库统一操作接口. 在VS中也可以添加数 ...

  7. .Net Core 系列:2、ADO.Net 基础

    目录: 1.环境搭建 2.ADO.Net 基础 3.ASP.Net Core 基础 4.MD5.Sha256.AES 加密 5.实现登录注册功能 6.实现目录管理功能 7.实现文章发布.编辑.阅览和删 ...

  8. jdbc基础 (二) 通过properties配置文件连接数据库

    csdn博文地址:jdbc基础 (二) 通过properties配置文件连接数据库 上一篇描述了对mysql数据库的简单操作,下面来看一下开发中应该如何灵活应用. 因为jdbc对数据库的驱动加载.连接 ...

  9. 水晶报表使用经验谈--使用sql语句直接生成dataset做为报表的数据源

    概述: 上一次自己做了直接在rpt文件里使用oledb连接使用数据库的方法 但是不是很灵活 这次做了使用sql语句直接生成dataset做为报表的数据源(即push模式),这样就可以接受参数了.当然报 ...

随机推荐

  1. SQL Server 数据库身份认证以及包含数据库

    首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 select * from sys.sql_logins 管理员可以直接修改密码,但无 ...

  2. FastLoad错误 — RDBMS error 2634

    我们来看一下下面这条语句: BEGIN LOADING stu_flERRORFILES error_1, error_2;   如果此时已经存在error_1或error_2表,那么将会报错,信息如 ...

  3. Android修改system只读权限

    在Root后的真机上使用adb remount命令不知道为什么不行. 但有些时候还是想向system文件夹下面写文件,例如把tcpdump工具放到/system/bin 下面,然后就可以直接使用tcp ...

  4. 【F#】 WebSharper框架

    WebSharper,它是一个基于F#构建的Web开发平台,使用F#构造从前到后的一整套内容.其中利用到F#中许多高级的开发特性,并可以将F#代码直接转化JavaScript,这样服务器端和客户端的通 ...

  5. Spiral Matrix

    Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...

  6. 《Dive into Python》Chapter 2 and Chapter 3 笔记

    Example 2.1. odbchelper.py def buildConnectionString(params): """Build a connection s ...

  7. 2434: [Noi2011]阿狸的打字机 - BZOJ

    Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的 ...

  8. c++ g++3.4.5 g++4.8.2 由编译器引起的编译异常

    #include <memory> #include <string> #include <iostream> class Student { public: St ...

  9. CentOS7 安装 PostGIS方法(适合国内网络

    安装Postgresql 9.4 yum install http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1. ...

  10. 【BZOJ】【1086】 【SCOI2005】王室联邦

    树分块 orz vfk && PoPoQQQ http://vfleaking.blog.163.com/blog/static/174807634201231684436977/ h ...