C#簡易電影記錄管理系統:開發二[增刪改查]

來源:互聯網
上載者:User

本期概述

上一期我們學習並實現了使用者登入功能.這一期我們一起來學習下電影記錄管理系統的的最主要功能(對資料的增刪改查).

 

新增資料表

首先我們需要在之前的資料庫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#簡易電影記錄管理系統:完結篇[許可權分配]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.