SQL Server -- 回忆笔记(三):ADO.NET之C#操作数据库
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#操作数据库的更多相关文章
- SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器
SQL Server -- 回忆笔记(五):T-SQL编程,系统变量,事务,游标,触发器 1. T-SQL编程 (1)声明变量 declare @age int (2)为变量赋值 (3)while循环 ...
- SQL Server -- 回忆笔记(四):case函数,索引,子查询,分页查询,视图,存储过程
SQL Server知识点回忆篇(四):case函数,索引,子查询,分页查询,视图,存储过程 1. CASE函数(相当于C#中的Switch) then '未成年人' else '成年人' end f ...
- SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询
SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...
- SQL Server -- 回忆笔记(一):初见数据库
SQL Server知识点回忆篇(一):初见数据库 1. 主键 primary key 唯一标识, 不会重复的值才会用来当做主键使用. 表可以没有主键,但建议每张表都有主键. 2. 数据冗余 ...
- Microsoft SQL Server Compact 4.0&&ADO.NET Entity Framework 4.1&&MVC3
最近重新查看微软MvcMusicStore-v3.0的源代码,发现忽略了很多重要的东西,特别是数据访问那一部分. 首先Microsoft SQL Server Compact 4.0 详细的介绍和下载 ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- SQL Server中的三种Join方式
1.测试数据准备 参考:Sql Server中的表访问方式Table Scan, Index Scan, Index Seek 这篇博客中的实验数据准备.这两篇博客使用了相同的实验数据. 2.SQ ...
- 【SQL Server学习笔记】Delete 语句、Output 子句、Merge语句
原文:[SQL Server学习笔记]Delete 语句.Output 子句.Merge语句 DELETE语句 --建表 select * into distribution from sys.obj ...
- Sql Server之使用T_SQL创建,修改,查看数据库信息
一.使用Transact_SQL创建数据库 Transact_SQL语法如下: create database database_name [ on [primary] [<fi ...
随机推荐
- 工作随笔—Java容器基础知识分享(持有对象)
1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...
- 破解第一课:NOP绕过登录界面
第一步 打开软件,任意输入密码,提示“用户密码错误还有2次机会” 第二步 OD载入软件,右键-----中文搜索引擎---智能搜索 按下CTRL+F,打开查找,输入“密码错误”,在结果中双击找到的结果 ...
- 一张脑图说清 Nginx 的主流程
一张脑图说清 Nginx 的主流程 这个脑图在 nginx-1.14.0-research 上.这是我在研究nginx的http模块的时候画的.基本上把 Nginx 主流程(特别是 HTTP 的部分) ...
- 【从零开始自制CPU之学习篇04】电容
电解电容: 多数在1μF以上,直接用数字表示.如:4.7μF.100μF.220μF等等.这种电容的两极有正负之分,长脚是正极. 独石电容: 独石电容器是多层陶瓷电容器的别称, 简称MLCC 读数方法 ...
- 『The Captain 最短路建图优化』
The Captain(BZOJ 4152) Description 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小 ...
- 从无到有-在create-react-app基础上接入react-router、redux-saga
搭建项目框架 新建项目 执行如下代码,用create-react-app来建立项目的基础框架,然后安装需要用到的依赖. $ npx create-react-app my-test-project $ ...
- OCR识别
最近作者项目中用到了身份证识别跟营业执照的OCR识别,就研究了一下百度云跟腾讯云的OCR产品接口. 1.腾讯云OCR 收费:身份证OCR和营业执照OCR接口,每个接口每个月各有1000次的免费调用 接 ...
- JAVA 连等赋值问题
一.描述 关于 Java 连等赋值,例如a=b=c;我们知道它是从右往左依次赋值的,其结果大致可以拆分为b=c;a=b;,但是当栈中没有持有变量的引用时,则会出现问题,例如: public class ...
- MVC基本开发介绍 (1)列表展示
前言: 现在如果用.net 的解决方案来做网站或者是网站的后台管理系统,MVC 应该是比较流行的. 自从进了新公司后,也一直在用mvc + webapi 来做项目,这里做个分享性的总结,有更好的方法欢 ...
- 搞懂Linux下的几种文件类型
在Linux系统下,有七类文件类型: 普通文件(-) 目录(d) 软链接(字符链接L) 套接字文件(S) 字符设备(S) 块设备(B) 管道文件(命名管道P) 普通文件.目录.软链接无需多解释. 管道 ...