婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ADO.NET無連接模式的詳細介紹

ADO.NET無連接模式的詳細介紹

熱門標簽:手機地圖標注如何刪除 外呼系統(tǒng)費用一年 寧波自動外呼系統(tǒng)代理 辦理400電話證件 外呼系統(tǒng)代理品牌 世紀佳緣地圖標注怎么去掉 怎么給超市做地圖標注入駐店 十堰正規(guī)電銷機器人系統(tǒng) 巫師3為什么地圖標注的財寶沒有

無連接模式:可以在沒有打開連接時在內(nèi)存中操作數(shù)據(jù),DataAdapter通過管理連接為無連接模式提供服務(wù),當(dāng)要從數(shù)據(jù)庫中查詢數(shù)據(jù)時,DataAdapter打開一個連接,填充指定的DataSet,等數(shù)據(jù)讀取完馬上自動關(guān)閉連接,然后可以對數(shù)據(jù)做修改,再次使用DataAdapter打開連接,持久化修改(無論是更新,刪除或是更新),最后自動關(guān)閉連接,使用無連接模式的情況是有一些獨立數(shù)據(jù),它們不會發(fā)生改變或者很少改變,因為在將填充DataSet和更新數(shù)據(jù)這段時間內(nèi)數(shù)據(jù)庫中的實際數(shù)據(jù)也許會發(fā)生改變,如果需要將數(shù)據(jù)立即持久化到數(shù)據(jù)庫請使用連接模式

讀取數(shù)據(jù)到DataSet:無連接意味著一個連接建立了一個與數(shù)據(jù)庫的會話,請求的數(shù)據(jù)讀入到DataSet中,然后通過斷開數(shù)據(jù)庫的連接關(guān)閉會話,這時會話因為與數(shù)據(jù)庫的斷開而關(guān)閉,DataSet成為一個無連接的數(shù)據(jù)庫

復(fù)制代碼 代碼如下:

/// summary>
      /// 查詢學(xué)生信息
      /// /summary>
      /// returns>返回填充了學(xué)生表的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");//調(diào)用fill方法時,SqlDataAdapter會自動打開連接,讀取數(shù)據(jù)然后關(guān)閉連接
          foreach (DataRow dr in ds.Tables["student"].Rows)
          {
              Console.WriteLine(dr["name"]);
          }
          return ds;
      }

將DataSet的修改保存到數(shù)據(jù)庫
插入數(shù)據(jù)

復(fù)制代碼 代碼如下:

/// summary>
      /// 插入學(xué)生信息,并返回插入后的DataSet
      /// /summary>
      /// param name="stu">學(xué)生實體類/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;

      }

更新數(shù)據(jù)

復(fù)制代碼 代碼如下:

/// summary>
      /// 根據(jù)ID更新姓名和年齡
      /// /summary>
      /// param name="name">姓名/param>
      /// param name="age">年齡/param>
      /// param name="id">學(xué)生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;
      }

刪除數(shù)據(jù)

復(fù)制代碼 代碼如下:

/// summary>
      /// 根據(jù)ID刪除一個學(xué)生
      /// /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;
      }

標簽:嘉興 景德鎮(zhèn) 山西 天門 泰州 牡丹江 通遼

巨人網(wǎng)絡(luò)通訊聲明:本文標題《ADO.NET無連接模式的詳細介紹》,本文關(guān)鍵詞  ADO.NET,無,連接,模式,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ADO.NET無連接模式的詳細介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于ADO.NET無連接模式的詳細介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 宁波市| 普格县| 苍南县| 得荣县| 高淳县| 七台河市| 德阳市| 永吉县| 韶关市| 丘北县| 乐清市| 固原市| 渑池县| 南丹县| 绥芬河市| 中山市| 特克斯县| 万山特区| 海安县| 阿拉善盟| 运城市| 阿巴嘎旗| 淄博市| 加查县| 汉寿县| 成武县| 西青区| 洪湖市| 八宿县| 公主岭市| 龙泉市| 财经| 扬中市| 横山县| 元江| 琼中| 会宁县| 牡丹江市| 克山县| 永善县| 陕西省|