ADO.Net技术
Connection对象
1.连接数据库
通过SqlConnection对象的State属性判断数据库的连接状态:
public override ConnectionState State{ get;}
属性值:ConnectionState枚举
枚举值 说明
Broken 与数据源的连接中断
Closed 连接处于关闭状态
Connecting 连接对象正在与数据源连接
Executing 连接对象正在执行命令
Fetching 连接对象正在检索数据
Open 连接处于打开状态
Try
{
string conStr = “server=.;database=hmliang;uid=sa;pwd=”;
SqlConnection conn = new SqlConnection(conStr);
conn.Open();
if (conn.State == ConnectionState.Open)
{
}
conn.Close();
//conn.Dispose();
}
catch{}
2.关闭连接
Close方法用于关闭一个连接。
Dispose方法不仅关闭连接,而且还清理连接所占用的资源。
注:在编写应用程序时,对数据库操作完成后,要及时关闭数据库的连接,以防止在对数据库进行其他操作时数据库被占用。
Command对象
1.3个重要的属性:
a).Connection属性用于设置SqlCommand使用的SqlConnection
b).CommandText属性用于设置要对数据源执行的的SQL语句或存储过程
c).CommandType属性用于设置指定CommandText的类型。
CommandType枚举成员:
StoredProcedure:存储过程的名称
TableDirect:表的名称
Text:SQL文本命令
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = “SELECT COUNT(*) FROM A”;
cmd.CommandType = CommandType.Text;
int i = Convert.ToInt32(cmd.ExecuteScalar());
2.执行SQL语句
1).ExecuteNonQuery方法
执行SQL语句,并返回受影响的行数。
public override int ExecuteNonQuery();
2).ExecuteReader方法
执行SQL语句,并生成一个包含数据的SqlDataReader对象的实例。
public SqlDataReader ExecuteReader()
SqlDataReader sdr = cmd.ExecuteReader();
while(sdr.Read())
{
sdr[1].ToString();
}
Sdr.Close();
3).ExecuteScalar方法
执行SQL语句,返回结果集中的第一行的第一列
public override Object ExecuteScalar()
DataReader对象
1.判断查询结果中是否有值
public override bool HasRows{ get;};
2.读取数据
public override bool Read()
pulbic override bool Close()
DataAdapter对象
1.对象概述
DataAdapter对象是一个数据适配器对象,是DataSet与数据源之间的桥梁。
DataAdapter对象提供了4个属性,用于实现与数据源之间的互通:
a).SelectCommand属性:向数据库发送查询SQL语句
b).DeleteCommand属性:向数据库发送删除SQL语句
c).InsertCommand属性:向数据库发送插入SQL语句
d).UpdateCommand属性:向数据库发送更新SQL语句
2.填充DataSet数据集
Public int Fill(DataSet dataSet,string srcTable)
dataSet:要用记录和架构(如果必要)填充的DataSet
srcTable:用于表映射的源表的名称
返回值:已在DataSet中成功添加或刷新的行数,这不包括受不返回行的语句影响的行。
SqlDataAdapter sda = new SqlDataAdaper();
sda.SelectCommand = cmd;
DataSet ds = new DataSet();
sda.Fill(ds, “cs”);
3.更新数据源
public int Update(DataTable dataTable)
dataTable:用于更新数据源的DataTable
返回值:DataSet中成功更新的行数
// 创建一个DataTable
DataTable dt = ds.Tables[“cs”];
// 把表结构加载到tb_command表中
sda.FillSchema(dt, SchemaType.Mapped);
// 创建一个DataRow
DataRow dr = dt.Rows.Find(txtNo.Text);
// 设置DataRow中的值
dr[“姓名”] = txtName.Text.Trim();
// 实例化一个SqlCommandBuilder
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(sda);
// 调用其Update方法将DataTable更新到数据库中
sda.Update(dt);
注:在DataTable对象上可以多次使用Fill方法。如果主键存在,则传入会与已有的匹配行合并;如果主键不存在,则传入行会追加到DataTable中。
DataSet对象
1.概述
DataSet对象就像存放于内存中的一个小型数据库。它可以包含数据表、列、行、视图、约束、以及关系。通常,DataSet的数据来源于数据库或者XML,为了从数据库中获取数据,需要使用数据适配器(DataAdapter)从数据库中查询数据。
2.合并DataSet内容
Public void Merge(
DataSet dataSet,
bool preserveChanges,
MissingSchemaAction missingSchemaAction)
dataSet:其数据和架构将被合并到DataSet中
preserveChanges:要保留当前DataSet中的更改,则为true;否则为false
missingSchemaAction:MissingSchemaAction枚举值之一
MissingSchemaAction枚举成员及说明
枚举成员 说明
Add 添加必需的列以完成架构
AddWithKey 添加必需的列和主键信息以完成架构
Error 如果缺少指定的列映射,则生成InvalidOperationException
Ignore 忽略额外列
注:当DataSet对象为null时,无法进行合并。
ds1.Merge(ds,true,MissingSchemaAction.AddWithKey);
2.复制DataSet内容
public DataSet Copy()
《C#从入门到精通》读后总结
ADO.Net技术的更多相关文章
- C#ADO.NET技术总结
[ADO.NET的主要组件-..NET framework数据提供程序和DataSet(数据集)] 一.DataSet数据集负责对数据库执行命令. 二.NET framework数据提供程序的四个核心 ...
- [翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)
Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 ...
- ADO.NET 访问数据库
对数据库的访问时各种数据库应用程序开发的核心技术,.NET框架中提出的ADO.NET技术为应用程序的开发提供了一致的接口,增强了程序的可移植性和可扩展性. a:使用链接对象Connection连接数据 ...
- ADO.NET学习系列(一)
一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行:通过ADO.NET就能在数据库中执行SQL了.ADO.NET中提供了对不同数据库的统一操作接口(ODBC).另外还有一种操作数据库的 ...
- ADO.NET学习系列(三)----做一个登录案例
总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...
- ADO
目 录 第1章 基础 1 1.1 引入ADO库文件 1 1.1.1 版本 1 1.2 初始化OLE/COM库环境 2 1.3 comdef.h 2 1.3.1 字符串编码 ...
- ADO.NET数据库
ASP.NET提供了ADO.NET技术,它是ASP.NET应用程序与数据库进行交互的一种技术. ADO.NET技术把对数据库的操作分为几个步骤,并为每个步骤提供对象来封装操作过程,从而使对数据库的操作 ...
- 微软.NET各子技术领域的应用前景
从2002年微软发布.NET 1.0,其间历经了8年的发展,再到.NET 4.0,其已经成为一个庞大而复杂的软件开发与运行平台,架构日益复杂,应用领域也在不断地扩展,包容了“一堆”的子技术领域. 在. ...
- ADO.NET 代码示例
转自:http://msdn.microsoft.com/zh-cn/library/dw70f090 本主题中的代码列表演示如何使用下面的 ADO.NET 技术从数据库中检索数据: ADO.NET ...
随机推荐
- C++开发与Windows API
Windows API 向 C++ 开发人员提出了一项挑战. 组成 API 的众多库大都表现为 C 语言风格的函数和句柄或是 COM 风格的接口. 这些用起来都不太方便,需要进行一定的封装或间接操作. ...
- webview调用javascript脚本无反应
最近遇到一个问题:在html中有一段javascript脚本定义了一个方法,在使用webview.loadUrl("javascript:方法名()")时方法未执行,后来 查资料发 ...
- bzoj1835
最近状态太差,先补补结题报告吧这是一道好题设f[i,j]表示到第j个位置建了i个基站且第j个位置建了基站的最小花费不难得到f[i,j]=min(f[i-1,k]+cost[k+1,j])+c[j];首 ...
- 模式串匹配KMP详解
关于KMP模式串匹配网上蛮多的. 对于KMP有自己理解所以写下来希望能够对你们的学习有帮助. 之前暑假的时候学过,然后好长时间没用发现又忘了,现在再看看发现有了新的理解. ============== ...
- Navigation Drawer(导航抽屉)
目录(?)[-] 创建一个导航抽屉 创建抽屉布局 初始化抽屉列表 处理导航项选点击事件 监听导航抽屉打开和关闭事件 点击应用图标来打开和关闭导航抽屉 创建一个导航抽屉 导航抽屉是一个位于屏幕左侧边缘用 ...
- (转载)更好的重启nginx 服务器
(转载)http://jar-c.blog.163.com/blog/static/1164012502010511128782/ 以前使用的重启命令 killall -HUP nginx 停止ki ...
- 获得WCF Client端的本地端口 z
当WCF调用远程服务时,显示该调用的网速或流量.其中比较关键的一步就是需要获得WCF Client端的本地端口,原来以为是个简单的事情,结果查了1个多小时谷歌,硬是没找到好的法子,只有自己动手了. ...
- JavaScript---网络编程(7)-Dom模型(节点间的层次关系,节点的增、删、改)
利用节点间的层次关系获取节点: 上一节讲了3中获取的方式: * ※※一.绝对获取,获取元素的3种方式:-Element * 1.getElementById(): 通过标签中的id属性值获来取该标签对 ...
- 是否存在两个树的和是固定数 hashmap使用 leecode
two sum https://oj.leetcode.com/submissions/detail/8220548/ public class Solution { public int[] two ...
- lecode Interleaving String
这个问题,前面思考过,当时就是用搜索的方法,此处又遇到一次,发现自己理解的太浅了 Given s1, s2, s3, find whether s3 is formed by the interlea ...