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

一.提到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; 
                }
            }
        }
发布了21 篇原创文章 · 获赞 3 · 访问量 353

猜你喜欢

转载自blog.csdn.net/MrLsss/article/details/104064492