本期概述
上一期我們學習並實現了使用者登入功能.這一期我們一起來學習下電影記錄管理系統的的最主要功能(對資料的增刪改查).
新增資料表
首先我們需要在之前的資料庫Movie中建立一個Record資料表,用於儲存我們需要操作的電影記錄資料,這裡Id需要設定為自動成長().
建立完資料表後,我們需要手動插入一些資料.
資料庫建立完成後,開始實施系統介面.
介面設計
表單name: FrmManager
文字框 電影名稱name:txtMovie 導演name:txtDirector 髮型日期name:txtDate
按鈕 查看記錄name:btnView 刪除記錄name:btnDelete 添加記錄name:btnAdd 儲存記錄name:btnSave
其中DataGridView 設計 name:dgvManager
建立DataGridView裡的列
編輯datagridview裡的頁首名稱(HeadText),欄位屬性名稱(DataPropertyName)和name, name可以隨便寫,只要每列的name不一樣就行.
這裡給出我的設定: 編號項 name:Id DataPropertyName: Id HeaderText: 編號
DataPropertyName 是指Sql Sever資料庫裡的欄位名(列名),所以必須跟資料庫裡的欄位名相同.
HeadText為顯示在DataGridView介面上的頁首名.
編號列
name:Id DataPropertyName: Id HeaderText: 編號
電影名稱列
name:Movie_Name DataPropertyName:Movie_Name HeaderText: 電影名稱
導演列
name:Movie_Director DataPropertyName:Movie_Director HeaderText: 導演
發行日期列
name:Date_Released DataPropertyName:Date_Released HeaderText: 發行日期
設定完DataGridView中的列後 我們運行下看看
系統預設滑鼠選中模式為儲存格選中,為了方便我們接下來的操作,我們把選中模式改為全行選中.
查看效果
介面和資料庫完成後,我們便開始寫主程式碼.
增-添加記錄 (添加一條新記錄)
//添加資料 private void btnAdd_Click(object sender, EventArgs e) { //定義一個初始值n=0, 用於判斷後期是否成功插入資料 int n = 0; string sql = "insert into Record(Movie_Name,Movie_Director,Date_Released) values (@Movie_Name,@Movie_Director,@Date_Released)"; //判斷插入的資料是否為空白,如果為空白,則提示重新插入! if (txtMovie.Text.Trim() == "" || txtDirector.Text.Trim() == "" || txtDate.Text.Trim() == "") { MessageBox.Show("插入資料不可為空,請按要求插入資料!"); return; } //向資料庫插入參數 SqlParameter[] param ={ new SqlParameter("@Movie_Name",txtMovie.Text), new SqlParameter("@Movie_Director",txtDirector.Text), new SqlParameter("@Date_Released",Convert.ToDateTime(txtDate.Text)) }; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); cmd.Parameters.AddRange(param); n = cmd.ExecuteNonQuery(); if (n == 0) { MessageBox.Show("添加失敗!"); return; } else if (n > 0) { MessageBox.Show("添加成功!"); } conn.Close(); //調用refresh方法,在添加完成資料後 自動重新整理 顯示新資料 Refresh(); }
刪-刪除記錄 (刪除已有記錄)
//刪除資料private void btnDelete_Click(object sender, EventArgs e){ //使用sql刪除語句 string sql = "delete from Record where 1=1"; //如果datagridview的當前行被選中 if (dgvManager.CurrentRow.Selected) { //將sql語句 delete from Record where 1=1 + and Id = + 當前選中行的第0個儲存格的號碼(即Id號) sql = sql + "and Id=" + Convert.ToInt32(dgvManager.CurrentRow.Cells[0].Value.ToString()); } int n = 0; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); n = cmd.ExecuteNonQuery(); if (n == 0) { MessageBox.Show("不存在的ID!"); return; } else if (n > 0) { MessageBox.Show("刪除成功!"); } conn.Close(); //刪除完後 重新整理一下當前資料 Refresh();}
改-儲存記錄 (修改一條記錄)
1.在寫儲存記錄代碼之前,我們需要將DataGridView裡的資料顯示在文字框中,以便我們修改.
雙擊DataGridView控制項,然後添加如下代碼.
//將滑鼠點擊的datagridview 上的行內容傳遞給 文字框private void dgvManager_CellContentClick(object sender, DataGridViewCellEventArgs e){ //擷取欄位名為Movie_Name的儲存格內容 txtMovie.Text = dgvManager.Rows[e.RowIndex].Cells["Movie_Name"].Value.ToString(); //同理 擷取當前點擊行裡的 name屬性為Movie_Director的儲存格 擷取並將其傳至txtDirector 文字框 txtDirector.Text = dgvManager.Rows[e.RowIndex].Cells["Movie_Director"].Value.ToString(); //new一個時間對象 目的是將電影發行時間的小時,分和秒給去掉 保留到最小單位為日 DateTime datetoDay = new DateTime().Date; //將當前行的日期儲存格的值 賦給 時間對象datetoDay datetoDay = Convert.ToDateTime(dgvManager.Rows[e.RowIndex].Cells["Date_Released"].Value); //通過ToShortDateString()方法 將日期後的00:00:00 給剔除掉 並賦給 txtDate文字框 txtDate.Text = datetoDay.ToShortDateString();}
這樣當我們點擊DataGridView控制項中的任意一行,可以看到裡面的內容被傳遞給了文字框.
然後直接在文字框中進行記錄修改,通過點擊 儲存記錄 按鈕進行記錄修改(代碼如下).
//更新資料操作private void btnSave_Click(object sender, EventArgs e){ //在對資料進行修改之前 對文字框的內容做一下檢查, 如果為空白 則提示重新輸入 if (txtMovie.Text.Trim() == "" || txtDirector.Text.Trim() == "" || txtDate.Text.Trim() == "") { MessageBox.Show("文字框的輸入不可為空!"); return; } //使用SQL update 更新語句 //擷取文字框中輸入的內容, 通過Id進行更新(Id為當前滑鼠點擊行的Id) string sqlUpdate = "update Record set Movie_Name ='" + txtMovie.Text + "',Movie_Director ='" + txtDirector.Text + "',Date_Released='" + txtDate.Text + "'where Id='" + dgvManager.CurrentRow.Cells[0].Value.ToString() + "'"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmdUpdate = new SqlCommand(sqlUpdate, conn); conn.Open(); int n = cmdUpdate.ExecuteNonQuery(); if (n == 0) { //提示更新失敗 MessageBox.Show("更新失敗!"); return;// 並且返回 } else if (n > 0) { //否則更新成功 MessageBox.Show("恭喜你!更新成功!"); } //執行完資料更新操作後 需要關閉資料庫 節省資源 conn.Close(); //更新完以後 調用重新整理方法,將更新後的資料 顯示在datagridview上面 Refresh();}
查-查看記錄 (查看當前所有記錄)
//查看並重新整理所有資料private void btnView_Click(object sender, EventArgs e){ string sql = "select Id,Movie_Name,Movie_Director,Date_Released from Record"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); dgvManager.DataSource = dt;}
代碼寫好了, 也許會有人說, 很多資料庫作業碼, 出現了重複,顯得很難看; 的確,我們可以將那些重複的部分分離出來,寫個SQLHelper類包含這些方法; 然後在需要資料操作的地方,調用相應的方法, 這樣既節省了代碼量, 又美觀,一舉兩得.
這裡給出我的 增刪改 和 查 的方法,調用的時候傳入相應的 參數 即可, 具體怎麼用這裡就不講了.
執行增刪改方法
static string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString;static SqlConnection conn = new SqlConnection(connStr);/// <summary>/// ExcuteNonQuery 用於執行增刪改方法/// </summary>/// <param name="strSql">增刪改Sql語句</param>/// <param name="paras">Sql參數數組</param>/// <returns>返回一個整數值,用於判斷是否操作成功</returns>public static int ExcuteNonQuery(string strSql, params SqlParameter[] paras){ SqlCommand cmd = new SqlCommand(strSql, conn); //執行sql指令 外面調用需傳入2個參數 Sql查詢語句和 Sql串連 cmd.Parameters.AddRange(paras); //添加 查詢語句執行的參數數組 conn.Open(); //執行前 需開啟資料庫連接 int n = cmd.ExecuteNonQuery(); //執行 cmd指令操作 返回成功操作的行數 conn.Close(); //用完關閉資料庫 節約資源 return n; //返回成功操作的行數}
執行查方法
/// <summary>/// ExecuteDataTable 用於執行 查 方法/// </summary>/// <param name="strSql">Sql Select語句</param>/// <returns>返回 查詢結果表</returns>public static DataTable ExecuteDataTable(string strSql){ SqlCommand cmd = new SqlCommand(strSql, conn); //執行sql指令 外面調用需傳入2個參數 Sql查詢語句和 Sql串連 SqlDataAdapter da = new SqlDataAdapter(cmd); //使用SqlDataAdapter資料配接器來載入cmd操作指令 DataTable dt = new DataTable(); //建立 DataTable da.Fill(dt); //將SqlDataAdapter 擷取的結果集 填充到 DataTable中 return dt; //返回 DataTable}
微軟對SQLServer資料庫操作提供了非常好的資料操作類SQLHelper.cs [詳情可以看這裡]
這樣,我們的主程式的增刪改查就做好了;下一起我們將一起學習下電影記錄管理系統的密碼修改功能,敬請期待.
附上原始碼
MovieRecordManagementSystem02.zip
相關推薦 [點此查看目錄]
- C#簡易電影記錄管理系統:開發一[使用者登入]
- C#簡易電影記錄管理系統:開發三[密碼修改]
- C#簡易電影記錄管理系統:開發四[日誌查看]
- C#簡易電影記錄管理系統:開發五[使用者註冊]
- C#簡易電影記錄管理系統:開發六[資料搜尋]
- C#簡易電影記錄管理系統:開發七[使用者分類]
- C#簡易電影記錄管理系統:開發八[資料備份]
- C#簡易電影記錄管理系統:開發九[資料恢複]
- C#簡易電影記錄管理系統:完結篇[許可權分配]