一、Connection对象

指定某个具体数据源以及提供登陆方式及用户名与密码。

Connection对象的主要成员:

1、ConnectionString属性:连接字符串,指定要操作的数据库以及登录方式和用户名密码。

连接字符串的两种配置过程:

  1. 利用ConnectionString直接在应用程序中配置。

  2. 利用配置文件配置。在WINFORM中利用App.config文件配置;在WEB中利用web.config文件配置。

    2、open()方法:打开与数据库的连接

若在连接数据库过程中配置连接字符串错误,则在打开是会抛出异常。

3、close()方法:数据访问完成后关闭连接

连接数据库的步骤:

1、定义连接字符串

(1)使用SQL用户名,密码验证

Data Source=服务器名称;Initial Catalog=数据库名;User ID=用户名;Pwd=密码(若没有密码,可省略)

(2)使用WINDOWS身份验证

Data Source=服务器名;Initial Catalog=数据库名;integrated security=sspi;

2、创建Connection对象

SqlConnection Connection = new SqlConnection(ConnString);

其中ConnString为连接字符串

3、打开与数据库的连接

Connection.Open();

源代码

(1)添加应用程序配置文件(注意不要修改文件名称App.config),在configuration代码中输入一下配置代码

1
2
3
4
5
<configuration>
    <connectionString>
    <add name="MyConStr" ConnectionString=Data Source=服务器名称;Initial Catalog=数据库名;User ID=用户名;Pwd=密码>
    </connectionString>
</configuration>

在代码窗口下添加引用system.configuration,在窗口中输入一下代码:

1
2
3
4
5
6
7
public string MyConnString
{
    get
    {
        return system.ConfigurationMnager.ConnectionStrings["MyConStr"].ConnnectionString.tostring
    }
}

以上方法便可以通过访问配置文件节点的方法连接数据库。

(2)

直接在代码框中输入以下代码,便可以直接连接数据库:

1
2
3
4
5
6
7
public string MyConnString
{
    get
    {
        return"Data Source=服务器名称;Initial Catalog=数据库名;User ID=用户名;Pwd=密码" 
    }
}

二、Command对象

执行命令并从数据源中返回结果。其命令的内容可以是Sql语句或者是一个存储过程。Command命令语句可以把Sql语句或者是存储过程通过connection的连接发送给数据源(数据库服务器),然后由数据库服务器执行这些命令,最后再把这些命令的结果通过Connection返回给应用程序。

Command对象的主要成员:
    1、Connection属性:Command对象使用的数据连接。

2、CommandText属性:执行SQL语句(增、删、查、改)。

3、ExecuteNonQuery()方法:执行不返回行的语句,如update。

4、ExecuteReader()方法:返回DataReader对象,查询结果直接存放在DateReader中,但是DataReader的实例化不是通过NEW语句实现,而是通过ExcuteReader方法来实现。

5、ExcuteScalar:返回单个值(第一行第一列)。

使用Command步骤:

1、创建数据库连接。

2、定义SQL语句。

3、创建Command对象。

4、执行命令。

两种实例化连接对象的方法:

(1)SqlConnection conn = new SqlConnection(MyConStr);

(2)SqlConnection conn = new SqlConnection();

conn.ConnectionString = MyConString;

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public int ExcuteSQLReturnInt(string sql)
{
    SqlConnection conn = new SqlConnection(MyConStr);
    try
    {
        SqlCommand cmd = new SqlCommand(sql,conn)
        //或者cmd.Connection = conn;
            //cmd.CommandText=sql
        if(conn.state==ConnectionState.close)
        {
            conn.Open();
        }
        int count = cmd.ExcuteNonQuery();
        return count;
    }
    catch(Exception ex)
    {
        return 0;
    }
    finally
    {
        conn.close();
        conn.dispose();
    }
}
1
注:因为客户端传来的sql语句有可能存在语法问题或者存在注入攻击等问题,所以我们可以用try catch来抛出异常。

若在sql语句中存在参数,则代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public int ExcuteSQLReturnInt(string sql,SqlParameter[] pars)
{
    SqlConnection conn = new SqlConnection(MyConStr);
    try
    {
        SqlCommand cmd = new SqlCommand(sql,conn)
        //或者cmd.Connection = conn;
            //cmd.CommandText=sql
        if(conn.state==ConnectionState.close)
        {
            conn.Open();
        }
        if(pars!=null&&pars.Length>0)
        {
            foreach(SqlParameter p in pars)
            {
                cmd.Parameters.Add(p);
            }
        }
        int count = cmd.ExcuteNonQuery();
        return count;
    }
    catch(Exception ex)
    {
        return 0;
    }
    finally
    {
        conn.close();
        conn.dispose();
    }
}

三、DataAdapter 数据适配器对象

通过DataAdapter可以将数据库中的数据传输到DataSet中,相当于数据运输的工具。

注:使用DataAdapter前必须要完成Connection的连接工作。

Dataadapter主要的属性和方法:

1、SelectCommand属性:从数据库检索数据的Command对象。

2、Fill()方法:向DataSet中的表填充数据。

3、update()方法:将DataSet中的数据提交到数据库中。

使用DataAdapter对象填充DataSet数据集的步骤:

1、创建DataAdapter对象并且使用Connection连接数据源。

SqlDataAdapter对象名 = new SqlDataAdapter(查询所用sql语句,数据库连接)

2、使用Fill()方法填充DataSet中的表

DataAdapter对象.fill(数据集对象,"数据表名称字符串")

注:若无数据表名称,则会把数据默认放到数据集对象的第一个表中。

源代码:

1
2
3
4
5
6
7
8
9
public DataSst SelectSqlReturnDataSet(string sql)
 
{
    SqlConnection conn = SqlConnection(MyConnString);
    SqlAdapter sda = new SqlDataAdapter(sql,conn);
    DataSet ds = new DataSet();
    sda.fill(ds);
    return ds;
}

若Sql查询语句中含有参数,则修改代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public DataSst SelectSqlReturnDataSet(string sql,SqlParameter[] pars)
 
{
    SqlConnection conn = SqlConnection(MyConnString);
    SqlAdapter sda = new SqlDataAdapter(sql,conn);
    if(pars!=null&&pars.Length>0)
    {
        foreach(SqlParameter p in pars)
        {
            sda.SelectCommand.Parameters.add(p);
        }
    }
    DataSet ds = new DataSet();
    sda.fill(ds);
    return ds;
}

若传输的既可能是Sql语句也可能是存储过程,则修改代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public DataSst SelectSqlReturnDataSet(string sql,SqlParameter[] pars,CommandType type)
 
{
    SqlConnection conn = SqlConnection(MyConnString);
    SqlAdapter sda = new SqlDataAdapter(sql,conn);
    if(pars!=null&&pars.Length>0)
    {
        foreach(SqlParameter p in pars)
        {
            sda.SelectCommand.Parameters.add(p);
        }
    }
    sda.SelectCommand.CommandType = type;
    DataSet ds = new DataSet();
    sda.fill(ds);
    return ds;
}

四、DataReader对象

用于在数据库中读取数据,一般用于读取一条数据(也可读取多条)。

DataReader的主要属性和方法:

1、HasRows属性:是否返回了结果。

2、Read()方法:前进到下一条记录,返回结果为布尔值,读取之后若下一行有值则返回为true,若下一行没有值则返回false。

3、close()方法:关闭DataReader对象

使用DataReader读取数据的基本步骤:

1、创建Command对象。

2、调用ExcuteReader()创建DataReader对象。

3、调用DataReader的Read()方法逐行读取数据。

4、读取某列的数据:(type)dataReader[]

获取某列的值可以在上面的方括号中用以下两种表是方法:

(1)指定列的索引,从0开始

(2)指定列名

5、关闭DataReader对象

注:(1)DataReader是直接将数据库中的数据读取到用户的客户端(应用程序或者某个控件上)

(2)DataReader使用后必须关闭

源代码

1
2
3
4
5
6
7
8
9
10
11
public SqlDataReader SelectSqlReturnDataReader(string sql)
{
    SqlConnection conn = new SqlConnection(MyConnString);
    SqlCommand cmd = new SqlCommand(sql);
    if(conn.ConnectionState.closed())
    {
        conn.Open();
    }
    SqlDataReader reader = cmd.ExcuteReader(CommandBehavior.CloseConnection);
    return reader;
}

注:

1
CommandBehavior.CloseConnection 可以自动在应用程序读取完数据之后自动关闭连接。

五、DataSat

DataSet数据集可以简单理解为一个临时数据库,可以将数据源的数据保存在内存中并且它是独立于任何数据库的。DataSet是由若干个DataTable组成的。

创建DataSet基本步骤:

创建一个DataSet,可以指定一个数据集的名称,如果不指定数据集的名称则系统默认为"NewDataSet"。

DataSet 数据集对象 = new DataSet("数据集的名称字符串")

源代码

public DataTable SelectSqlReturnDataTable(string sql,SqlParameter[] pars,CommandType type)
{
    SqlConnection conn = new SqlConnection(MyConnString);
    SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
    DataTable dt = new DataTable;
    sda.Fill(dt);
    return dt;
}

或者

1
2
3
4
5
6
7
8
public DataTable SelectSqlReturnDataTable(string sql,SqlParameter[] pars,CommandType type)
{
    SqlConnection conn = new SqlConnection(MyConnString);
    SqlDataAdapter sda = new SqlDataAdapter(sql,conn);
    DataSet ds = new DataSet();
    sda.Fill(ds,"myTable");     //其中myTable为ds中的一张表
    return ds.tables["myTable"];
  }
 

ADO.NET详解----核心对象的使用的更多相关文章

  1. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  2. Struts功能详解——ActionMapping对象

    Struts功能详解——ActionMapping对象 ActionMapping描述了struts中用户请求路径和Action的映射关系,在struts中每个ActionMapping都是通过pat ...

  3. php开发面试题---php面向对象详解(对象的主要三个特性)

    php开发面试题---php面向对象详解(对象的主要三个特性) 一.总结 一句话总结: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸 ...

  4. dom对象详解--document对象(二)

       dom对象详解--style对象 style对象 style对象和document对象下的集合对象styleSheets有关系,styleSheets是文档中所有style对象的集合,这里讲解的 ...

  5. dom对象详解--document对象(一)

     document对象 Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在. Document对象是window对象的一 ...

  6. BOF和EOF的详细解释 ADO的三个核心对象

    使用ADO连接数据库进行查一个列表询的时候,数据库将查询结果返回查询端,在查询端的内存里面就会有一个列表,这个列表存放的就是查询的结果.这个内存中的列表就是数据集.在你的程序里面rs就是标识的这个数据 ...

  7. 抓到 Netty 一个隐藏很深的内存泄露 Bug | 详解 Recycler 对象池的精妙设计与实现

    欢迎关注公众号:bin的技术小屋,如果大家在看文章的时候发现图片加载不了,可以到公众号查看原文 本系列Netty源码解析文章基于 4.1.56.Final版本 最近在 Review Netty 代码的 ...

  8. 18.Java 封装详解/多态详解/类对象转型详解

    封装概述 简述 封装是面向对象的三大特征之一. 封装优点 提高代码的安全性. 提高代码的复用性. "高内聚":封装细节,便于修改内部代码,提高可维护性. "低耦合&quo ...

  9. ASP.NET Core微服务 on K8S学习笔记(第一章:详解基本对象及服务发现)

    课程链接:http://video.jessetalk.cn/course/explore 良心课程,大家一起来学习哈! 任务1:课程介绍 任务2:Labels and Selectors 所有资源对 ...

随机推荐

  1. MRP工作台任务下达之计划组为必输

    应用 Oracle   Manufacturing Planning 层 Level Function 函数名 Funcgtion Name MRPFPPWB 表单名 Form   Name MRPS ...

  2. IZ65534: 'JAVA.LANG.CLASSFORMATERROR' ERROR FOR A VALID IDENTIFIER

    PAR status Closed as program error. Error description Error Message: The java class could not be loa ...

  3. Android重启应用程序代码

    Intent i = getBaseContext().getPackageManager() .getLaunchIntentForPackage(getBaseContext().getPacka ...

  4. Cocos2d—X游戏开发之CCTableView详解(十一)

    本来很早就想写关于CCTableView的文章,但是在基本功能实现之后呢,项目需求增加导致对这个控件的研究必须更加深入一点. 好的,现在开始介绍一下这个控件,在Cocos2d—X引擎中,这是一个仿制i ...

  5. 解决Android中TextView首行缩进的问题

    方式一:(推荐) setText("\u3000\u3000"+xxxxx); 方式二:这种方式不同分辨率会有问题 setText(""+xxxxx); 半角: ...

  6. VBA 开发学习--基础语法3

    VBA字符串函数列表 Trim(string) 去掉string左右两端空白 Ltrim(string) 去掉string左端空白 Rtrim(string) 去掉string右端空白 Len(str ...

  7. 在win7下装ubuntu(硬盘版安装)及遇到的问题

    都怪自己弄什么Ubuntu下的Android Studio,因为GFW,gradle总下载不了,用命令行下载一半关机了,然后Ubuntu就这样被我搞残废了.又张罗着重装. 其实就是参照网上的帖子,算是 ...

  8. VBA 简单调试

    在中断模式下(ctrl+Break键),可以做: 1.执行    工具----选项----编辑器----勾选“自动显示数据提示” 则当用鼠标悬停在变量或表达式上时,会出现提示窗口,显示其名称和值! 2 ...

  9. 2014.9.15HTML

    <html> <title> </title> ——页面标题 <head> </head> ——网页上的控制信息 <body> ...

  10. SQLSERVER 列名无效

    很多时候对数据库表修改字段后会出现“列名无效”,或者在查询分析器里面是红色的下划线,造成这个现象的原因是:SQL Server的intellisense(智能感知功能),没有感知到更改,需要重新整理一 ...