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 ...
随机推荐
- Zara带你快速入门WPF(3)---触发器篇
一.前言 使用触发器,可以动态的改变控件的外观,因为一些事件或属性改变了,把鼠标移动到按钮上,按钮就会改变其外观.通常这些必须写在C#代码中,使用WPF也可以使用XAMl实现,而这只会影响UI. 属性 ...
- C++ 断言
assert宏 (基本概念与用法整理) assert宏的深入学习 1.运行时断言 1.1.assert属于运行时断言,可以在运行时判断给定条件是否为真,如果为真则什么也不做,否则打印一跳错误信息,然后 ...
- phpStrom映射代码
- Android--SoundPool
前言 在Android中播放音频文件经常会用到MediaPlayer,但是MediaPlayer存在一些不足的地方,如:资源占用量较高.加载延迟时间较长.不支持多个音频同时播放等.这些缺点决定了Med ...
- Lucene 04 - 学习使用Lucene的Field(字段)
目录 1 Field的特性 2 常用的Field类型 3 常用的Field种类使用 3.1 准备环境 3.2 需求分析 3.3 修改代码 3.4 重新建立索引 1 Field的特性 Document( ...
- Linq用法小记
一.什么是Linq? LINQ即Language Integrated Query(语言集成查询),LINQ是集成到C#和Visual Basic.NET这些语言中用于提供查询数据能力的一个新特性. ...
- 初探Java设计模式3:行为型模式(策略,观察者等)
行为型模式 行为型模式关注的是各个类之间的相互作用,将职责划分清楚,使得我们的代码更加地清晰. 策略模式 策略模式太常用了,所以把它放到最前面进行介绍.它比较简单,我就不废话,直接用代码说事吧. 下面 ...
- 如何在React项目中直接使用WebAssembly
前言 自从入坑WebAssembly以来,躺了很多坑,也浏览了很多资料,都没有看到很多能够直接在前端项目中使用WebAssembly的例子.即使有,我自己按照介绍的步骤一步一步来, 也会报各种错误,官 ...
- ES6 系列之 Babel 是如何编译 Class 的(下)
前言 ES5 寄生组合式继承 function Parent (name) { this.name = name; } Parent.prototype.getName = function () { ...
- [十]JavaIO之FilterInputStream FilterOutputStream
FilterInputStream FilterOutputStream都是装饰器模式中的Decorator抽象装饰角色 他们继承了各自的抽象构建InputStream 和OutputStream ...