ADO.NET两种连接模型简介及增删改查实例

原创 2016年05月26日 17:50:17

        ADO.NET支持两种访问数据的模型:无连接模型和连接模型

        无连接模型:将数据下载到客户机器上,并在客户机上将数据封装到内存中,然后可以像访问本地关系数据库一样访问内存中的数据(例如DataSet)。

        连接模型:依赖于逐记录的访问,这种访问要求打开并保持与数据源的连接。

        Connection对象:负责与数据的连接

        Command对象:执行SQL语句,有三个常用方法:ExecuteNonQuery、ExecuteReader、ExecuteScalar

                                  ExecuteNonQuery:用于增删改,返回受影响的行数

                                  ExecuteReader:执行查询,返回一个SqlDataReader对象

                                  ExecuteScalar:执行查询,并返回查询所返回首行首列

        SqlDataReader对象:将查询数据直接送到目标位置,不经过任何的中转,执行速度快。


查询实例:

private void btnTest_Click(object sender, EventArgs e)
{
    try
    {
        string serverName = "192.168.0.171";
        string dataBaseName = "MyDB";
        string id = "sa";
        string pwd = "123456";
        //string str = "server = " + serverName + ";" + "database = " + dataBase + ";" + "uid = " + id + ";" + "pwd = " + pwd;
        string str = string.Format("server = {0};database = {1};uid = {2};pwd = {3}", serverName, dataBaseName, id, pwd);
        using (SqlConnection con = new SqlConnection(str))
        {
            //拼接sql语句
            string sql = "";
            //准备执行sql语句的对象
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                if (con.State == System.Data.ConnectionState.Closed)
                {
                    con.Open();//打开数据库
                    //以下若不使用using可以通过下句代码实现cmd和con的自动释放
                    //cmd.ExecuteNonQuery(System.Data.CommandBehavior.CloseConnection)
                    using (SqlDataReader reader = cmd.ExecuteReader())//准备读数据
                    {
                        //判断是否有数据(有没有行)
                        if (reader.HasRows)
                        {
                            //读取每一行
                            while (reader.Read())
                            {

                            }
                        }
                    }
                }
            }
        }
    }
    catch (Exception)
    {
        MessageBox.Show("数据库操作失败!!!");
    }
}

插入/更新/删除实例:仅sql语句不同,其它格式一样

private void btnTest_Click(object sender, EventArgs e)
{
    try
    {
        string serverName = "192.168.0.171";
        string dataBaseName = "MyDB";
        string id = "sa";
        string pwd = "123456";
        //string str = "server = " + serverName + ";" + "database = " + dataBase + ";" + "uid = " + id + ";" + "pwd = " + pwd;
        string str = string.Format("server = {0};database = {1};uid = {2};pwd = {3}", serverName, dataBaseName, id, pwd);
        using (SqlConnection con = new SqlConnection(str))
        {
            //拼接sql语句
            string sql = string.Format("insert into DeskInfo(name,num,desc) values('{0}','{1}','{2}')", txtName.Text, txtNum.Text, txtDesc.Text);
            //准备执行sql语句的对象
            using (SqlCommand cmd = new SqlCommand(sql, con))
            {
                if (con.State== System.Data.ConnectionState.Closed)
                {
                    con.Open();//打开数据库
                    if (cmd.ExecuteNonQuery())
                    {
                        MessageBox.Show("插入数据库失败");
                    }
                }
            }
        }
    }
    catch (Exception)
    {
        MessageBox.Show("数据库操作失败!!!");
    }
}

临时数据库DataSet

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace _04临时数据库DataSet
{
    class Program
    {
        static void Main(string[] args)
        {

            //创建数据库
            DataSet ds = new DataSet("mydatabase");
            //创建表
            DataTable dt = new DataTable("student");
            //创建列
            DataColumn dc1 = new DataColumn("stuId", typeof(int));//第一个列
            DataColumn dc2 = new DataColumn("stuName", typeof(string));//第二列
            //把列添加到表中
            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);
            //添加数据
            dt.Rows.Add(1, "nll");
            dt.Rows.Add(2,"ml");
            ds.Tables.Add(dt);//把表放到数据库中
            foreach (DataTable table in ds.Tables)
            {
                foreach (DataRow row in table.Rows)
                {
                    Console.WriteLine("{0},=========={1}",row[0],row[1]);
                }
            }
            Console.ReadKey();
        }
    }
}

版权声明:本文为【CSDN博主:松一160】原创文章,未经允许不得转载。

两种数据访问方式:从ADO 到ADO.NET

电脑最大的好处就是可以帮助人处理大量数据,由此离不开对数据库的访问,先看看最近在做ASP.NET例子的时候经常用到的ADO.NET的数据库访问方式。...

ADO 与ADO.NET两种数据访问方式区别。

1. ADO与ADO.NET简介   ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用...

ADO 与ADO.NET两种数据访问方式区别

1. ADO与ADO.NET简介  ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建...
  • yu_shu
  • yu_shu
  • 2006年11月01日 16:06
  • 443

ADO.NET 增删改查

 ADO.NET 增删改查   2010-12-04 18:28:45|  分类: ado.net |  标签: |举报 |字号大中小 订阅 查...
  • niewq
  • niewq
  • 2014年08月12日 20:48
  • 947

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

实现数据库的增删改查(ADO.Net)

//vb实现数据库的连接,修改,删除,插入(ADO.Net) - 云代码 http://yuncode.net/code/c_508403a91ab6b23 Public Cla...

关于ADO.NET数据库操作中的增删改查讲解

我们要连接数据库之后就要对它进行增删改查,这里我们就详细的分析一下吧。对于ADO.NET数据库操作Insert,Update,Delete等单向操作,对于插入、删除、修改等操作,由于是客户端应用程序向...
  • letIgo
  • letIgo
  • 2011年10月17日 15:59
  • 1090

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Ado.net连接数据库查询表信息的多种方法

// 第一种方法             /*string str = "server = . ; database = booksdata ; user id = sa ; pwd = sa";  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ADO.NET两种连接模型简介及增删改查实例
举报原因:
原因补充:

(最多只允许输入30个字)