ADO.NET基础总结及实例介绍

本文介绍了ADO.NET作为一组用于和数据源交互的面向对象类库,与ASP.NET的区别,并详细讲解了Connection、Command、DataAdapter、DataSet和DataTable五个关键对象的用途。通过示例展示了如何使用这些对象进行数据库操作,包括连接数据库、执行SQL命令和数据缓存策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.提到ADO.NET,经常会和ASP.NET进行混淆,两者的区别很大,没有可比性,下面讲下两者之前的区别:

**ADO.NET是一组用于和数据源(数据库)进行交互的面向对象类库。**
1. ASP.NET是微软在.net framework提供的用于开发Web应用程序的类库(技术),封装在System.Web.dll中,对应程序中是system.web这个命名空间。 2. ADO.NET对Microsoft Sql Server和XML等数据源以及通过OLE DB和XML公开的数据源提供一致的访问,ado.net类在system.data.dll中,并且与System.XML.dll中XML类集成。 3. ado.net是数据库的一种访问方式,不能与asp.net相提并论,asp.net是基于.NetFramdwork 的网站开发技术。在数据库访问主要使用ADO.NET方式

简单来讲ADO.NET是用来处理数据库的一种访问
方式。

下面介绍ADO.NET的五个常用对象:

  • Connection类(连接对象)

》和数据库交互,必须连接它。连接帮助指明数据库服务器,数据库名字,用户名,密码和连接数据库所需要的其他参数,Connection对象会被Command对象使用,这样就能知道在哪个数据源上执行Sql命令(脚本)。
  与数据库交互的过程意味着必须指明要执行的操作。这是依靠Command对象执行的。开发人员使用Command对象来发送SQL语句给数据库。

using (SqlConnection conn = new SqlConnection("data source=10.10.198.111;Database=systemconfig;uid=sa;password=sa"))
            {
                conn.Open();
            }

  SqlConnection参数中字符串是连接数据库地址、库名、用户名、密码等信息;通常是放web.config配置文件中,当需要调用时,直接引用配置信息,代码如下:

 <!--数据库连接地址-->
  <connectionStrings>
    <add name="connstr" connectionString="data source=10.10.198.111;Database=systemconfig;uid=sa;password=sa"/>
  </connectionStrings>
private static string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
  • Command对象

  成功与数据库建立连接后,就可以使用Command对象来执行增删改查等命令,Command对象常用方法有:ExecuteReader()方法,ExecuteScalar()方法,ExecutNonQuery()方法

 using (SqlConnection conn=new SqlConnection(connstr))
            {
                using (SqlCommand cmd = new SqlCommand(str, conn))
                {
                    conn.Open();
                    int r=cmd.ExecuteNonQuery();
                }
            }
  • DataAdapter类

  某些开发人员使用的数据主要是只读的,并且开发人员很少需要将其改变至底层的数据源。同样一些情况要求在内存中缓存数据,以此来减少并不改变的数据被数据库调用的次数。DataAdepter对象是一种用来充当dataset对象与实际数据源之间桥梁的对象,只要由dataset对象就有dataadepter对象,它的工作步骤:一种时通过command对象执行sql语句,从数据源中检索数据,并将检索到的结果填充到dataset对象中。另一种时把用户对dataset对象作出的更改写入到数据源中。

 using (SqlConnection cnn = new SqlConnection(connstr))
            {
                cnn.Open();
                using (SqlCommand cmd = cnn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    SqlDataAdapter apter = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    apter.Fill(ds);
                    return ds.Tables[0];
                }
            }
  • DataSet类

  Dataset对象是数据在内存中的表示形式。它包括多个DataTable对象,而DataTable包含行和列,就像一个普通的数据库中的表,DataSet是在特定的场景下使用――帮助管理内存中的数据并支持对数据的断开操作的。

  • DataTbale类

  DataTbale是一个临时保存数据的网格虚拟表(表示内存中数据的一个表)。DataTable是ADO DOT NET 库中的核心对象


扩展-DataGridView多行编辑删除代码如下:

   //更新datatable
        /// <summary>
        /// 更新DataTable
        /// </summary>
        /// <param name="table">DataTable</param>
        /// <returns></returns>
        public static bool UpdatDataTables(DataTable table)
        {
            //sql语句是获取表结构
            string sql = "SELECT * FROM " + table.TableName.ToString() + "";
            SqlConnection con = new SqlConnection();
            SqlCommand cmd = new SqlCommand();
            using (SqlDataAdapter adapter = new SqlDataAdapter())
            {
                adapter.SelectCommand = cmd;//先添加命令对象,再添加连接对象
                adapter.SelectCommand.CommandText = sql;
                adapter.SelectCommand.CommandType = CommandType.Text;
                adapter.SelectCommand.Connection = con;
                adapter.SelectCommand.Connection.ConnectionString = Constr;
                adapter.SelectCommand.Connection.Open();
                SqlCommandBuilder cb = new SqlCommandBuilder(adapter);//适配器
                int r = adapter.Update(table);
                //int r = adapter.Update(table);
                return r > 0;
            }
        }
        //删除
        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="strid">要删除的学生ID</param>
        /// <returns></returns>
        public static bool DeleteOneData(string strid)
        {
            #region 拼接删除
            string sql = "DELETE students WHERE StuNo IN (" + strid + ")";
            using (SqlConnection con = new SqlConnection(Constr))
            {
                con.Open();
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    int s = cmd.ExecuteNonQuery();
                    return s > 0;
                }
            }
            #endregion

        }
        public static int DeleteXunhuan(string stuno)
        {
            string sql = "DELETE students WHERE StuNo='" + stuno + "'";
            using (SqlConnection con = new SqlConnection(Constr))
            {
                con.Open();
                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    int r = cmd.ExecuteNonQuery();
                    return r;
                }
            }
        }
        //点击修改
        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="stuno">学号</param>
        /// <param name="stuname">姓名</param>
        /// <param name="stusex">性别</param>
        /// <param name="stuage">年龄</param>
        /// <param name="classno">班级编号</param>
        /// <returns></returns>
        public static bool UpdteEndWrite(string stuno, string stuname, string stusex, int stuage, string classno)
        {
            string sql = "UPDATE students SET StuName='" + stuname + "' ,Sex='" + stusex + "' ,Age=" + stuage + " ,ClassNo='" + classno + "' WHERE StuNo='" + stuno+ "'";
            using (SqlConnection con = new SqlConnection(Constr))
            {
                con.Open();

                using (SqlCommand cmd = new SqlCommand(sql, con))
                {
                    int r = cmd.ExecuteNonQuery();
                    return r>0; 
                }
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值