C#簡易電影記錄管理系統:開發六[資料搜尋]

來源:互聯網
上載者:User

本期概述

前幾期中,我們實現了使用者對系統資料記錄的基本操作-增刪改查, 由於資料量不是很多,我們可以輕易的找到我們所需要操作的記錄;但是一旦資料量多起來,是否還能方便的找到我們想要操作的資料呢?這一期我們一起來實現一個功能-資料搜尋.

 

原理

主要原理是 使用SQL模糊查詢語句 select * from 表名 where 欄位名 like '%輸入的內容%' 對庫內相應的欄位進行模糊查詢;

通過 擷取文字框輸入的內容 與  資料庫中各欄位下的內容 進行一一匹配,如果輸入的內容 被某個欄位下的儲存格的內容所包含或者相同,則顯示該列內容.

這裡使用了 單個欄位 模糊搜尋相關資訊的查詢語句 select * from 表名 where "選擇的單個欄位" like '%輸入的內容%' 以及

全欄位 模糊搜尋資訊的查詢語句 select * from 表名 where (欄位名1 like '%輸入的內容%')or(欄位名2 like '%輸入的內容%')....;

 

介面設計

首先,我們需要在之前的 電影記錄的管理介面FrmManager 增加一個查詢文字框(name:txtDataforQuery) 和一個combox下列條(name:cmbforfieldSelecting)

 

代碼如下(這裡代碼僅限於資料搜尋功能,如果需要查看其他功能代碼 請看這裡)

private void txtDataforQuery_TextChanged(object sender, EventArgs e){    string sql = "";    if (txtDataforQuery.Text.Trim() == "")    {        //執行查詢語句        sql = "select * from Record";    }    else if (seletedValue == "全域搜尋" || cmbforTypeSelecting.Text == "全域搜尋")    {        //全欄位搜尋        sql = "select * from Record where(Id like'%" + txtDataforQuery.Text.Trim() + "%')or(Movie_Name like'%" + txtDataforQuery.Text.Trim() + "%')or(Movie_Director like'%" + txtDataforQuery.Text.Trim() + "%')or(Date_Released like'%" + txtDataforQuery.Text.Trim() + "%')";    }    else if (seletedValue == "Id" || seletedValue == "Movie_Name" || seletedValue == "Movie_Director" || seletedValue == "Date_Released")    {        //通過相應的欄位進行搜尋        sql = "select * from Record where " + seletedValue + " like '%" + txtDataforQuery.Text.Trim() + "%'";    }    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;}

這裡所做的資料搜尋,是通過文字框的TextChanged 事件來自動擷取 輸入的文字 同時與 資料庫中相應欄位下的資料相匹配,如果輸入的資料被資料庫包含或者相同則顯示出來.

//當系統載入的時候自動顯示DataGridView的資料private void FrmManager_Load(object sender, EventArgs e){    //調用重新整理資料的方法    Refresh();    cmbforTypeSelecting.Text = "全域搜尋";    cmbforTypeSelecting.Items.Add("全域搜尋");    cmbforTypeSelecting.Items.Add("編號");    cmbforTypeSelecting.Items.Add("電影名稱");    cmbforTypeSelecting.Items.Add("導演");    cmbforTypeSelecting.Items.Add("發行時間");}string seletedValue;private void txtDataforQuery_TextChanged(object sender, EventArgs e){    string sql = "";    if (txtDataforQuery.Text.Trim() == "")    {        //執行查詢語句        sql = "select * from Record";    }    else if (seletedValue == "全域搜尋" || cmbforTypeSelecting.Text == "全域搜尋")    {        //全欄位搜尋        sql = "select * from Record where(Id like'%" + txtDataforQuery.Text.Trim() + "%')or(Movie_Name like'%" + txtDataforQuery.Text.Trim() + "%')or(Movie_Director like'%" + txtDataforQuery.Text.Trim() + "%')or(Date_Released like'%" + txtDataforQuery.Text.Trim() + "%')";    }    else if (seletedValue == "Id" || seletedValue == "Movie_Name" || seletedValue == "Movie_Director" || seletedValue == "Date_Released")    {        //通過相應的欄位進行搜尋        sql = "select * from Record where " + seletedValue + " like '%" + txtDataforQuery.Text.Trim() + "%'";    }    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;}private void cmbforTypeSelecting_SelectedIndexChanged(object sender, EventArgs e){    string strSelected = cmbforTypeSelecting.Text;    switch (strSelected)    {        case "全域搜尋":            seletedValue = "全域搜尋";            break;        case "編號":            seletedValue = "Id";            break;        case "電影名稱":            seletedValue = "Movie_Name";            break;        case "導演":            seletedValue = "Movie_Director";            break;        case "發行時間":            seletedValue = "Date_Released";            break;        default:            seletedValue = "全域搜尋";            break;    }}

 

同理,我們在 日誌查詢介面 也做一個 記錄搜尋.

介面新增按鈕如下 輸入文字框name:txtlogQuery   搜尋按鈕name:btnlogQuery

 

代碼如下(如想看本介面的其他功能 請看這裡)

//日誌查詢private void btnlogQuery_Click(object sender, EventArgs e){    //初始化 showSql語句    string showSql = "";    ///如果文字框txtQuery 輸入的內容為空白值    if (txtlogQuery.Text.Trim() == "")    {        //顯示所有資料        showSql = "select * from Log";    }    else    {        //否則 進行 全域搜尋 將文字框裡的內容與 各欄位 進行 匹配        showSql = "select * from Log where(Id like'%" + txtlogQuery.Text.Trim() +        "%')or(User_Name like'%" + txtlogQuery.Text.Trim() + "%')or(Situation like'%"        + txtlogQuery.Text.Trim() + "%')or(Time like'%" + txtlogQuery.Text.Trim() + "%')";    }    SqlConnection conn = new SqlConnection(connStr);    SqlCommand cmd = new SqlCommand(showSql, conn);    DataTable dt = new DataTable();    SqlDataAdapter sda = new SqlDataAdapter(cmd);    sda.Fill(dt);    dgvLog.DataSource = dt;}

 

運行測試(管理介面搜尋測試)

1.如果不搜尋(預設狀態內容)

 

2.如果什麼都不選 預設為全域搜尋

 

3.通過選擇欄位 搜尋一

 

4.通過選擇欄位  搜尋二

 

5.選擇全域搜尋

 

效果測試(日誌查看介面搜尋)

1.未搜尋 預設內容

 

2.全域搜尋一

 

3.全域搜尋二

 

這樣我們的資料搜尋(模糊查詢)功能就做好了.下一期,我們一起學習下使用者分類功能(將系統使用者劃分為管理員和普通使用者2類).

 

附上原始碼

MovieRecordManagementSystem06.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.