SQL Server知识点回忆篇(三):ADO.NET之C#操作数据库

1.连接数据库

  (1)创建连接字符串:

  使用windows身份验证时的连接字符串:

private string conStr="Data Source=MyTestDB;Initial Catalog=tbUsers;Integrated Security=True";

  使用用户名和密码时的连接字符串:

private string conStr="Data Source=MyTestDB;Initial Catalog=tbUsers;uid=sa;pwd=test";

  (2)创建连接对象:

SqlConnection con=new SqlConnection(Constr);

  (3)打开连接:

con.Open();

  (4)关闭连接,释放资源:

      强烈建议在使用完连接时一定要关闭连接,以便连接可以返回到ADO.NET连接池中。

con.Close();
con.Dispose();

2.  连接数据库执行sql语句 -- ExecuteNonQuery()的使用

  .NET Framework 提供的 SqlCommand 对象,用于执行SQL语句。

  调用ExecuteNonQuery()方法执行sql语句,返回一个 int 类型的数据,值是影响的行数,在使用insert,update, delete语句时可调用该方法执行sq语句。

public static int ExeNoQuery(string sql)
{
using (SqlConnection con=new SqlConnection(Constr))
{
using (SqlCommand cmd=new SqlCommand(sql,con))
{
con.Open();
return cmd.ExecuteNonQuery();
}
}
}

3.  连接数据库执行sql语句 -- ExecuteScalar()的使用

  调用 ExecuteScalar() 方法执行sql语句,返回一个 object 类型的数据,值是执行sql语句的结果,在使用聚合函数时可调用该方法执行sq语句。

public static object ExeScalar(string sql)
{
using (SqlConnection con = new SqlConnection(Constr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
con.Open();
return cmd.ExecuteScalar();
}
}
}

4.  连接数据库执行sql语句 -- ExecuteReader()的使用

  使用ExecuteReader()方法执行sql语句,返回值为SqlDataReader类型,可以从返回的SqlDataReader中一条一条取数据,该方法用于查询多行多列结果时。

  SqlDataReader只读取数据,只能前进不能后退。使用SqlDataReader时必须保证连接是打开状态。

  SqlDataReader使用完毕后,要把SqlDataReader关闭,释放。

public static SqlDataReader ExeReader(string sql)
{
SqlConnection con = new SqlConnection(Constr);
SqlCommand cmd = new SqlCommand(sql, con); con.Open();
SqlDataReader reder = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return reder;
}

5. 连接数据库执行sql语句 -- SqlDataAdapter的使用

  使用SqlDataAdapter,可以将查询的结果填充在datatable中返回。

public static DataTable ExeAdapter(string sql)
{
using (SqlConnection con =new SqlConnection(Constr))
{
using (SqlCommand cmd = new SqlCommand(sql,con))
{using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
con.Open();
da.Fill(dt);
return dt;
}
}
}
}

6. 使用带参数的 sql 语句

  为了安全的使用sql语句,防止sql注入,请不要直接使用用户输入的值来拼接sql语句,应使用参数的方式将值传入sql语句执行。

  带参数的sql语句:

string strsql = "insert into tbUsers(UserName,Age,Email,DepartmentID) values(@uName,@uAge,@uEmail,@uDeptID)";
SqlParameter[] ps = new SqlParameter[] {
new SqlParameter("@uName",SqlDbType.VarChar) {Value="小明"},
new SqlParameter("@uAge",SqlDbType.Int) {Value= },
new SqlParameter("@uEmail",SqlDbType.VarChar) {Value="xiaoming@qq.com" },
new SqlParameter("@uDeptID",SqlDbType.VarChar) {Value="" } }; int iRow = ExeNoQuery(strsql, ps); if (iRow>)
{
Console.WriteLine("影响的行数:{0}",iRow);
} Console.ReadKey();

  执行带参数的sql语句:

 public static int ExeNoQuery(string sql, SqlParameter[] para)
{
using (SqlConnection con = new SqlConnection(Constr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (para != null)
{
cmd.Parameters.AddRange(para);
}
con.Open();
return cmd.ExecuteNonQuery();
}
}
}

7. ADO.NET连接池

  (1) 连接池使新连接必须打开的次数得以减少。

  (2) 启用ADO.NET连接池后,创建一个连接对象,不会立刻关闭。后面的其他连接对象可以直接使用。

  (3) 连接池中的对象过一段时间没有被访问会自动销毁。(如果空闲时间达到大约 4-8 分钟,或池进程检测到与服务器的连接已断开,连接池进程会将该连接从池中移除。)

  (4) 默认情况下,在 ADO.NET 中连接池是启用的。

SQL Server -- 回忆笔记(三):ADO.NET之C#操作数据库的更多相关文章

  1. SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器

    SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器 1. T-SQL编程 (1)声明变量 declare @age int (2)为变量赋值 (3)while循环 ...

  2. SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程

    SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...

  3. SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

    SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

  4. SQL Server -- 回忆笔记(一):初见数据库

    SQL Server知识点回忆篇(一):初见数据库 1.  主键 primary key    唯一标识, 不会重复的值才会用来当做主键使用. 表可以没有主键,但建议每张表都有主键. 2.  数据冗余 ...

  5. Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3

    最近重新查看微软MvcMusicStore-v3.0的源代码,发现忽略了很多重要的东西,特别是数据访问那一部分. 首先Microsoft SQL Server Compact 4.0 详细的介绍和下载 ...

  6. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  7. SQL Server中的三种Join方式

      1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...

  8. 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句

    原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...

  9. Sql Server之使用T_SQL创建,修改,查看数据库信息

    一.使用Transact_SQL创建数据库 Transact_SQL语法如下:  create database database_name   [ on     [primary]  [<fi ...

随机推荐

  1. 工作随笔—Java容器基础知识分享(持有对象)

    1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...

  2. 破解第一课:NOP绕过登录界面

    第一步 打开软件,任意输入密码,提示“用户密码错误还有2次机会” 第二步 OD载入软件,右键-----中文搜索引擎---智能搜索 按下CTRL+F,打开查找,输入“密码错误”,在结果中双击找到的结果 ...

  3. 一张脑图说清 Nginx 的主流程

    一张脑图说清 Nginx 的主流程 这个脑图在 nginx-1.14.0-research 上.这是我在研究nginx的http模块的时候画的.基本上把 Nginx 主流程(特别是 HTTP 的部分) ...

  4. 【从零开始自制CPU之学习篇04】电容

    电解电容: 多数在1μF以上,直接用数字表示.如:4.7μF.100μF.220μF等等.这种电容的两极有正负之分,长脚是正极. 独石电容: 独石电容器是多层陶瓷电容器的别称, 简称MLCC 读数方法 ...

  5. 『The Captain 最短路建图优化』

    The Captain(BZOJ 4152) Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小 ...

  6. 从无到有-在create-react-app基础上接入react-router、redux-saga

    搭建项目框架 新建项目 执行如下代码,用create-react-app来建立项目的基础框架,然后安装需要用到的依赖. $ npx create-react-app my-test-project $ ...

  7. OCR识别

    最近作者项目中用到了身份证识别跟营业执照的OCR识别,就研究了一下百度云跟腾讯云的OCR产品接口. 1.腾讯云OCR 收费:身份证OCR和营业执照OCR接口,每个接口每个月各有1000次的免费调用 接 ...

  8. JAVA 连等赋值问题

    一.描述 关于 Java 连等赋值,例如a=b=c;我们知道它是从右往左依次赋值的,其结果大致可以拆分为b=c;a=b;,但是当栈中没有持有变量的引用时,则会出现问题,例如: public class ...

  9. MVC基本开发介绍 (1)列表展示

    前言: 现在如果用.net 的解决方案来做网站或者是网站的后台管理系统,MVC 应该是比较流行的. 自从进了新公司后,也一直在用mvc + webapi 来做项目,这里做个分享性的总结,有更好的方法欢 ...

  10. 搞懂Linux下的几种文件类型

    在Linux系统下,有七类文件类型: 普通文件(-) 目录(d) 软链接(字符链接L) 套接字文件(S) 字符设备(S) 块设备(B) 管道文件(命名管道P) 普通文件.目录.软链接无需多解释. 管道 ...