国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答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
主站蜘蛛池模板: 国产精品ⅴ视频免费观看 | 国产综合一区二区 | 欧美日韩精品国产一区二区 | 在线播放一区 | 日韩在线不卡 | 国内一区二区 | 国产精品免费 | 97国产精品欧美一区二区三区 | 国产乱了真实在线观看 | 国产国拍亚洲精品永久不卡 | 久久精品综合国产二区 | 精品久久久久久久久中文字幕 | 国产成人无精品久久久 | 日韩大片在线观看 | 久操久热 | 免费在线观看的视频 | 国产精品一区欧美日韩制服 | 亚洲一区中文 | 国产成人精品一区二三区在线观看 | 久久影院一区 | 久久久久久久岛国免费播放 | 日韩精品一区二区三区在线观看l | 国产一区精品在线观看 | 日韩在线欧美高清一区 | 免费看欧美日韩一区二区三区 | 国产精品成人一区二区 | 欧美精品一区二区三区免费播放 | 成人一a毛片免费视频 | 欧美中文娱乐网 | 国产精品制服诱惑 | 亚洲国产精品一区二区九九 | 国产成人亚洲欧美三区综合 | 国产成人精品视频一区二区不卡 | 亚洲成人精品久久 | 亚洲欧洲精品成人久久曰 | 国产欧美在线视频免费 | 狠狠色狠狠色合久久伊人 | 热久久国产欧美一区二区精品 | 亚洲 欧美 自拍 另类 | 伊人精品在线视频 | 国产免费黄色 |