ado.net的簡單資料庫操作(三)——簡單增刪改查的實際應用

来源:https://www.cnblogs.com/CherishTheYouth/archive/2018/08/07/CherishTheYouth_807.html
-Advertisement-
Play Games

果然,在犯困的時候就該寫寫博客,寫博客就不困了,哈哈! 上篇我記錄了自己的SqlHelper的開發過程,今天記錄一下如何使用這個sqlhelper書寫一個具有簡單增刪改查的小實例啦。 實例描述:在資料庫新建一張TbClass表,將表的內容讀取到一個DataGridView上,並且可以在winform ...


   果然,在犯困的時候就該寫寫博客,寫博客就不困了,哈哈!

  上篇我記錄了自己的SqlHelper的開發過程,今天記錄一下如何使用這個sqlhelper書寫一個具有簡單增刪改查的小實例啦。

  實例描述:在資料庫新建一張TbClass表,將表的內容讀取到一個DataGridView上,並且可以在winform面板上對錶里的內容進行增、刪、改的操作。首先給出winform的設計:

 

 下麵開始寫步驟咯,哈哈:

第一步:搭建該winform框架:

 

 按圖所示分別對其屬性進行一些修改,搭建完成後為:

第二步:編寫代碼:

1.數據表介紹

首先看看我的資料庫長啥樣的:

tClassId為主鍵自增,不能為空,tClassName為nvarchar,非空 ,tClassDesc為nVarchar,可以為空。

然後確定查詢語句,為:select * from TbClass;

2.添加SqlHelper,編寫數據載入方法

首先,創建LoadData()方法,然後在Form1_Load()方法中調用LoadData方法;

LoadData方法書寫如下:

 1  public void LoadData()
 2  {
 3             //聲明一個list集合
 4             List<TbClass> list = new List<TbClass>();
 5             //書寫sql語句
 6             string sql = "select * from TbClass";
 7             //調SqlHelper實現查詢
 8             SqlDataReader reader = SqlHelper.ExecuteReader(sql);
 9             if (reader.HasRows)
10             {
11                 while (reader.Read())
12                 {
13                     //創建資料庫對象tbClass
14                     TbClass tbClass = new TbClass();
15                     tbClass.tClassId = reader.GetInt32(0);
16                     tbClass.tClassName = reader.GetString(1);
17                     tbClass.tClassDesc = reader.IsDBNull(2) ? null : reader.GetString(2); //數據表中該欄位是允許為空的,故這裡做出判斷,為空則使該值為null,
18                     list.Add(tbClass);
19                 }
20             }
21             //將list數據綁定到dataGridView上
22             this.dataGridView1.DataSource = list;
23  }

 

   在使用SqlHelper之前,需要在App.config中添加配置代碼和在項目中添加引用,這是需要註意的,因為在以前的博客中有詳細講解如何添加,這裡不再講了哈。

 下麵看一下讀取數據後的結果:

3.完成添加班級的功能

添加功能主要是向資料庫中插入一條記錄,首先寫出sql語句:

 

sql = “insert into TbClass (tClassName,tClassDesc) Values('高5班','文科班') ”;

 

 

 

因為這裡需要使用傳遞參數的sql語句,所以上面的語句寫為:

sql = "insert into TbClass (tClassName,tClassDesc) Values(@classname,@classdesc)"

 

 

 然後我們在winform上雙擊 “添加"按鈕,進入相關方法體邊界方法:

看代碼:

 1          private void button1_Click(object sender, EventArgs e)
 2          {
 3             //1.執行插入操作
 4              bool  row = InsertClass();
 5             if (row)
 6             {
 7                 //2.插入成功,重新載入數據
 8                 MessageBox.Show("添加了" + 1 +"班級");
 9                 LoadData();
10             }
11             else
12             {
13                     //插入失敗
14             }
15           
16          }
17 
18         /// <summary>
19         /// 執行向資料庫中插入添加的班級的操作
20         /// </summary>
21         /// <returns> 返回布爾類型結果,成功返回true,否則false</returns>
22         private Boolean InsertClass()
23         {
24             //1.獲取輸入值
25             string className = txtClassName.Text.Trim();
26             string classDesc = txtClassDesc.Text.Trim();
27             //2.sql語句
28             string sql = "insert into TbClass (tClassName,tClassDesc) values (@classname,@classdesc)";
29             //3.定義參數數組
30             SqlParameter[] parameters = new SqlParameter[] {
31                 new SqlParameter("@classname",System.Data.SqlDbType.NVarChar,50){Value = className },
32                 new SqlParameter("@classdesc",System.Data.SqlDbType.NVarChar,250){Value = classDesc }
33             };
34             //4.調用SqlHelper,返回結果
35             return   SqlHelper.ExecuteNonQurey(sql,parameters) > 0;
36 
37         }                    

 

 然後看一下插入的結果:

 

 

 4.修改班級和刪除班級

(1)實現選中某行,該行的信息出現在下麵的編輯框中

要實現對某個行的操作,首先得選中某行,所以,首先要把dataGridView的屬性里的SelectionMode改為FullRowSelect,如圖:

 

 然後,要在滑鼠選中某一行時,獲取該行的tClassId.接下來看看獲取該id的做法:

在dataGridView的屬性頁中找到一個名為RowEnter的事件,雙擊進入方法,編寫函數:

 

 

 然後我們看代碼:

 1  private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)
 2  {
 3             //獲取當前選中的行對象
 4             DataGridViewRow currentRow = this.dataGridView1.Rows[e.RowIndex];
 5 
 6             //獲取選中行對象中的值,並將值存入TbClass中
 7             TbClass model = currentRow.DataBoundItem as TbClass;
 8 
 9             if (model != null)
10             {
11                 txtClassId.Text = model.tClassId.ToString();
12                 txtEditClassName.Text = model.tClassName.ToString();
13                 txtEditClassDesc.Text = model.tClassDesc.ToString();
14             }
15             
16}

 

 

 

 (3)實現修改操作

在獲取了某行的行內信息後那麼對該行進行修改和刪除就變得簡單了,又是幾個資料庫的操作,下麵我們雙擊保存修改,進入修改按鈕方法體中書寫代碼:

 代碼如下:

 1   /// <summary>
 2         /// 將修改後的內容存儲到資料庫,並重新載入數據
 3         /// </summary>
 4         /// <param name="sender"></param>
 5         /// <param name="e"></param>
 6         private void button2_Click(object sender, EventArgs e)
 7         {
 8             //獲取修改後的數據
 9             TbClass model = new TbClass();
10             int classId = Convert.ToInt32(txtClassId.Text);
11             string className = txtEditClassName.Text.Trim();
12             string classDesc = txtEditClassDesc.Text.Trim();
13             //確定和書寫sql語句
14             string sql = "update TbClass set tClassName = @classname , tClassDesc = @classdesc where tClassId = @clsssid";
15             //定義參數數組並賦值
16             SqlParameter[] parameters = new SqlParameter[] {
17                 new SqlParameter("@clsssid",System.Data.SqlDbType.Int){ Value = classId},
18                 new SqlParameter("@classname",System.Data.SqlDbType.NVarChar,50){Value = className },
19                 new SqlParameter("@classdesc ",System.Data.SqlDbType.NVarChar,250){Value = classDesc }
20             };
21             int row = SqlHelper.ExecuteNonQurey(sql,parameters);
22             if (row > 0)
23             {
24                 MessageBox.Show("更新了" +row + "");
25                 LoadData();
26             }
27             else
28             {
29                     
30             }
31 
32         }

 

演示結果: 

(4)刪除操作

同樣是操作資料庫的語句,還是看代碼吧,哈哈:

 

 1   private void button3_Click(object sender, EventArgs e)
 2         {
 3             //獲取當前行的 tClassId
 4             int classId = Convert.ToInt32(txtClassId.Text);
 5             //sql語句
 6             string sql = "delete  from TbClass where tClassId = @classid";
 7             //參數數組
 8             SqlParameter[] parameters = new SqlParameter[] {
 9                 new SqlParameter("@classid",System.Data.SqlDbType.Int){ Value = classId}
10             };
11             //執行sql語句
12             int row = SqlHelper.ExecuteNonQurey(sql,parameters);
13             if (row > 0)
14             {
15                 MessageBox.Show("刪除了" + row + "記錄");
16                 LoadData();
17             }
18 
19         }

 

 

結果圖:

 

 好了,關於ado.net的一些基本操作就記錄到這裡哦,後面要去學mvc了,希望和其他菜鳥們一起進步。

 

我的QQ: 3074596466

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 歷屆試題 核桃的數量 時間限制:1.0s 記憶體限制:256.0MB 時間限制:1.0s 記憶體限制:256.0MB 問題描述 小張是軟體項目經理,他帶領3個開發組。工期緊,今天都在加班呢。為鼓舞士氣,小張打算給每個組發一袋核桃(據傳言能補腦)。他的要求是: 1. 各組的核桃數量必須相同 2. 各組內必 ...
  • 上代碼,有問題歡迎留言指出。 執行完上述代碼後,會在代碼同目錄下創建一個保存職位信息的txt文件,jobDetails.txt。 這隻是獲取一頁招聘信息的代碼,後續會添加,如何獲取url和所有頁的招聘信息的代碼。 智聯招聘網站還是有一點點小坑的,就是不是所有的招聘職位詳情頁面都是使用智聯的官網格式, ...
  • 本文目錄 1. 摘要 2. Window下運行 3.linux下運行 4. 開發記錄 5. 總結 1.概要 寫《Asp.Net Core 2.0 項目實戰》系列斷斷續續已經很長時間了,期間很多朋友要求開放源碼,但是項目代碼一直有很多問題,就算勉強開源出來大家看起來也比較費勁,運行起來也看不到實際的效 ...
  • 今天是2018年8月8日,已經和騰訊解除勞動關係,我的公司正式開始運營,雖然還有很多事情需要理清,公司官網也沒有做,接下來什麼事情都需要自己去完成了,需要一步一個腳印去完善,開啟一個新的征途,我將在博客和公眾號更新我的動態。 昨天是星期二,我在騰訊這家優秀的公司工作的第4180天,這天我離開了騰訊。 ...
  • AspNetCore+Swagger 生成Model 描述 前言: 本篇文章實現是基於上一篇文章,進下補充:多餘的就不多說了,只是為了實現Model的描述生成:有興趣的可以結合上一篇的進行實現:如有更好的辦法希望可以告知謝謝大家! 上一篇文章地址: https://www.cnblogs.com/s ...
  • 上一篇文章介紹了.NET Entity Framework ,並演示了Model First模式,本文將繼續討論 Code First 模式的實現。 ...
  • Socket通訊和基於Socket的TCP和UDP編程基礎詳解,讓你快速上手編寫網路聊天室。。。 ...
  • 一:view部分 <form method="post" enctype="multipart/form-data" action="/Position/ImportExcel" class="form-group"> <input name="file" type="file" id="file" ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...