最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

ADO.NET无连接模式的详细介绍

来源:懂视网 责编:小采 时间:2020-11-27 22:40:34
文档

ADO.NET无连接模式的详细介绍

ADO.NET无连接模式的详细介绍:无连接模式:可以在没有打开连接时在内存中操作数据,DataAdapter通过管理连接为无连接模式提供服务,当要从数据库中查询数据时,DataAdapter打开一个连接,填充指定的DataSet,等数据读取完马上自动关闭连接,然后可以对数据做修改,再次使用DataAdap
推荐度:
导读ADO.NET无连接模式的详细介绍:无连接模式:可以在没有打开连接时在内存中操作数据,DataAdapter通过管理连接为无连接模式提供服务,当要从数据库中查询数据时,DataAdapter打开一个连接,填充指定的DataSet,等数据读取完马上自动关闭连接,然后可以对数据做修改,再次使用DataAdap

无连接模式:可以在没有打开连接时在内存中操作数据,DataAdapter通过管理连接为无连接模式提供服务,当要从数据库中查询数据时,DataAdapter打开一个连接,填充指定的DataSet,等数据读取完马上自动关闭连接,然后可以对数据做修改,再次使用DataAdapter打开连接,持久化修改(无论是更新,删除或是更新),最后自动关闭连接,使用无连接模式的情况是有一些独立数据,它们不会发生改变或者很少改变,因为在将填充DataSet和更新数据这段时间内数据库中的实际数据也许会发生改变,如果需要将数据立即持久化到数据库请使用连接模式

读取数据到DataSet:无连接意味着一个连接建立了一个与数据库的会话,请求的数据读入到DataSet中,然后通过断开数据库的连接关闭会话,这时会话因为与数据库的断开而关闭,DataSet成为一个无连接的数据库

代码如下:
/// <summary>
      /// 查询学生信息
      /// </summary>
      /// <returns>返回填充了学生表的DataSet</returns>
      public DataSet GetUserInfor()
      {
          string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
          var conn = new SqlConnection(str);
          DataSet ds = new DataSet();
          var sda = new SqlDataAdapter("SELECT * FROM Student",conn);
          sda.Fill(ds, "student");//调用fill方法时,SqlDataAdapter会自动打开连接,读取数据然后关闭连接
          foreach (DataRow dr in ds.Tables["student"].Rows)
          {
              Console.WriteLine(dr["name"]);
          }
          return ds;
      }

将DataSet的修改保存到数据库
插入数据

代码如下:
/// <summary>
      /// 插入学生信息,并返回插入后的DataSet
      /// </summary>
      /// <param name="stu">学生实体类</param>
      public DataSet InsertStudnt(Student stu)
      {
          DataSet ds = GetUserInfor();
          string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
          string sql = "INSERT INTO student VALUES (@name,@age)";
          var conn = new SqlConnection(str);
          var cmd = new SqlCommand(sql,conn);
          var sda = new SqlDataAdapter();
          SqlParameter sqlParam1 = new SqlParameter()
          {
              ParameterName = "@name",
              SourceColumn = "name"
          };
          SqlParameter sqlParam2 = new SqlParameter()
          {
              ParameterName = "@age",
              SourceColumn = "age"
          };
          SqlParameter[] sqlParamArray = new SqlParameter[] {sqlParam1,sqlParam2 };
          cmd.Parameters.AddRange(sqlParamArray);
          sda.InsertCommand = cmd;
          DataRow dr = ds.Tables["student"].NewRow();
          dr["name"] = stu.name;
          dr["age"] = stu.age;
          ds.Tables["student"].Rows.Add(dr);
          sda.Update(ds,"student");
          return ds;

      }

更新数据

代码如下:
/// <summary>
      /// 根据ID更新姓名和年龄
      /// </summary>
      /// <param name="name">姓名</param>
      /// <param name="age">年龄</param>
      /// <param name="id">学生ID</param>
      /// <returns>返回更新后的DataSet</returns>
      public DataSet UpdateStudent(Student stu,int id)
      {
          DataSet ds = GetUserInfor();
          string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
          string sql = "UPDATE student SET name=@name,age=@age WHERE id=@id";
          var conn = new SqlConnection(str);
          var cmd = new SqlCommand(sql, conn);
          var sda = new SqlDataAdapter();
          SqlParameter param1 = new SqlParameter()
          {
              ParameterName="@name",SourceColumn="name"
          };
          SqlParameter param2 = new SqlParameter()
          {
              ParameterName = "@age",
              SourceColumn = "age",
              SqlDbType=SqlDbType.Int
          };
          SqlParameter param3 = new SqlParameter()
          {
              ParameterName = "@id",
              SourceColumn = "id"
          };
          SqlParameter[] param = new SqlParameter[] {param1,param2,param3 };
          cmd.Parameters.AddRange(param);
          sda.UpdateCommand = cmd;
          DataTable dt = ds.Tables["student"];
          foreach (DataRow dr in dt.Rows)
          {
              int oldID=Convert.ToInt32(dr["id"]);
              if (oldID == id)
              {
                  dr["name"] = stu.name;
                  dr["age"] = stu.age;
              }
          }
          sda.Update(ds,"student");
          return ds;
      }

删除数据

代码如下:
/// <summary>
      /// 根据ID删除一个学生
      /// </summary>
      /// <param name="id">返回更新后的DataSet</param>
      public DataSet DeleteStudent(int id)
      {
          DataSet ds = GetUserInfor();
          string str = "Data Source=.;Initial Catalog=Student;Integrated Security=True";
          string sql = "DELETE FROM student WHERE id=@id";
          var conn = new SqlConnection(str);
          var cmd = new SqlCommand(sql, conn);
          var sda = new SqlDataAdapter();
          SqlParameter param = new SqlParameter()
          {
              ParameterName="@id",SourceColumn="id",SqlDbType=SqlDbType.Int
          };
          cmd.Parameters.Add(param);
          sda.DeleteCommand = cmd;
          DataTable dt=ds.Tables["student"];
          foreach (DataRow dr in dt.Rows)
          {
              int oldId = Convert.ToInt32(dr["id"]);
              if (oldId == id)
                  dr.Delete();
          }
          sda.Update(ds,"student");
          return ds;
      }

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

ADO.NET无连接模式的详细介绍

ADO.NET无连接模式的详细介绍:无连接模式:可以在没有打开连接时在内存中操作数据,DataAdapter通过管理连接为无连接模式提供服务,当要从数据库中查询数据时,DataAdapter打开一个连接,填充指定的DataSet,等数据读取完马上自动关闭连接,然后可以对数据做修改,再次使用DataAdap
推荐度:
标签: 简介 net 详细介绍
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top