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技术的更多相关文章

  1. C#ADO.NET技术总结

    [ADO.NET的主要组件-..NET framework数据提供程序和DataSet(数据集)] 一.DataSet数据集负责对数据库执行命令. 二.NET framework数据提供程序的四个核心 ...

  2. [翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)

    Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 ...

  3. ADO.NET 访问数据库

    对数据库的访问时各种数据库应用程序开发的核心技术,.NET框架中提出的ADO.NET技术为应用程序的开发提供了一致的接口,增强了程序的可移植性和可扩展性. a:使用链接对象Connection连接数据 ...

  4. ADO.NET学习系列(一)

    一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行:通过ADO.NET就能在数据库中执行SQL了.ADO.NET中提供了对不同数据库的统一操作接口(ODBC).另外还有一种操作数据库的 ...

  5. ADO.NET学习系列(三)----做一个登录案例

    总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...

  6. ADO

    目 录 第1章 基础    1 1.1 引入ADO库文件    1 1.1.1 版本    1 1.2 初始化OLE/COM库环境    2 1.3 comdef.h    2 1.3.1 字符串编码 ...

  7. ADO.NET数据库

    ASP.NET提供了ADO.NET技术,它是ASP.NET应用程序与数据库进行交互的一种技术. ADO.NET技术把对数据库的操作分为几个步骤,并为每个步骤提供对象来封装操作过程,从而使对数据库的操作 ...

  8. 微软.NET各子技术领域的应用前景

    从2002年微软发布.NET 1.0,其间历经了8年的发展,再到.NET 4.0,其已经成为一个庞大而复杂的软件开发与运行平台,架构日益复杂,应用领域也在不断地扩展,包容了“一堆”的子技术领域. 在. ...

  9. ADO.NET 代码示例

    转自:http://msdn.microsoft.com/zh-cn/library/dw70f090 本主题中的代码列表演示如何使用下面的 ADO.NET 技术从数据库中检索数据: ADO.NET ...

随机推荐

  1. Qt源码分析之QPointer

    QPointer是一个指针封装类,其作用类似于智能指针,但是它最大的特点应该是在指针的控制上,它希望一个Qt的指针(当然是从QObject派生的)可以同时被多个类拥有,这在界面编程中当然是很常见的事情 ...

  2. win7下登陆中国银行网上银行IE浏览器版本过高问题解决

    2013-11-23 2013-11-23登录中国银行出现以下提示. 操作系统为windows7 64位旗舰版,搜狗浏览器版本为4.1.1.7598.想不到突然出现如下提示.打电话去问,告知使用IE7 ...

  3. 合并 ios 静态库

    合并 cordovaLib库: lipo -create 'Release-iphoneos/libCordova.a' "Release-iphonesimulator/libCordov ...

  4. struts2结合生成验证码

    import java.util.Arrays; /** * 工具类,生成随机验证码字符串 * @version 1.0 2012/12/01 * @author shiyz * */ public ...

  5. insert into select 堵塞update

    mysql[192.168.5.15] blocking_thread[2286333] blocking_query[insert into temp_zhuyou_mktact_1(hotel_g ...

  6. JavaScript 判断对象是否为空

    /** **判断是否null *@param data */ function isNull(data) {     return (data == "" || data == u ...

  7. bzoj2257

    不难发现其实这个捣鼓过程就是一个辗转相减所以最小燃料是瓶容量的最小公约数然后穷举约数即可 ..] of longint; n,k,x,i,m,j,t:longint; procedure sort(l ...

  8. The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

    The server is temporarily unable to service your request due to maintenance downtime or capacity pro ...

  9. 用 Eclipse 开发 Android 应用程序

    转自:http://www.apkbus.com/android-13828-1-1.html 开始之前 本教程介绍如何在 Eclipse 环境中进行 Android 应用程序开发,包括两个示例应用程 ...

  10. Entity Framework 学习初级篇1--EF基本概况

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685011.html 最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不 ...