国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

應(yīng)用系統(tǒng)中通用組合查詢(xún)功能的實(shí)現(xiàn)方法

2018-11-15 01:33邵雨舟
電腦知識(shí)與技術(shù) 2018年20期

摘要:組合查詢(xún)功能在信息系統(tǒng)軟件中應(yīng)用較廣,在運(yùn)行中使用者可以根據(jù)自己的查詢(xún)需要從下拉列表框中選擇要查詢(xún)的項(xiàng)目,將多個(gè)條件通過(guò)關(guān)系運(yùn)算符進(jìn)行連接,從而實(shí)現(xiàn)多個(gè)條件的組合查詢(xún)。查詢(xún)條件可任意組合,查詢(xún)結(jié)果顯示在GridView控件中。該文結(jié)合自己的開(kāi)發(fā)體會(huì),介紹組合查詢(xún)功能在系統(tǒng)中的實(shí)現(xiàn)方法。

關(guān)鍵詞:ASP.NET;組合查詢(xún);代碼實(shí)現(xiàn)

中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)20-0007-03

一個(gè)完善的應(yīng)用系統(tǒng)程序中,查詢(xún)功能是其重要的組成部分,靈活的查詢(xún)方法、不同的查詢(xún)需求是使用者對(duì)系統(tǒng)提出的更高的要求,如果只能滿足固定條件和固定內(nèi)容的查詢(xún),會(huì)限制系統(tǒng)使用的靈活性。如果能讓使用者自己選擇查詢(xún)條件,篩選查看的項(xiàng)目,就能夠完善我們的查詢(xún)功能。

在設(shè)計(jì)畢業(yè)生就業(yè)管理信息系統(tǒng)的過(guò)程中,我們就開(kāi)發(fā)了通用的查詢(xún)功能模塊,為了滿足對(duì)畢業(yè)生不同信息的查詢(xún)需要,在系統(tǒng)中我們定義了不同查詢(xún)條件的選擇方式,而且還可以靈活地使用多個(gè)條件的組合查詢(xún),支持查詢(xún)內(nèi)容的模糊查詢(xún),可以實(shí)時(shí)地查看所形成的查詢(xún)語(yǔ)句,最后將查詢(xún)結(jié)果用數(shù)據(jù)表的形式輸出顯示。

雖然系統(tǒng)是基于asp.net技術(shù)開(kāi)發(fā)的,但基本的方法和設(shè)計(jì)思路對(duì)使用其他語(yǔ)言開(kāi)發(fā)仍然具有一定的指導(dǎo)作用。

下面以系統(tǒng)中的畢業(yè)生信息查詢(xún)?yōu)槔齺?lái)介紹實(shí)現(xiàn)的方法和設(shè)計(jì)思路。

1 頁(yè)面的設(shè)計(jì)

系統(tǒng)采用的是Web頁(yè)面的實(shí)現(xiàn)方式,在頁(yè)面中添加了實(shí)現(xiàn)選擇"查詢(xún)字段"和"算術(shù)運(yùn)算符"的下拉列表框控件,然后再添加一個(gè)單行文本框用來(lái)輸入查詢(xún)要比較的參考值,這樣就可以實(shí)現(xiàn)一個(gè)查詢(xún)條件的定義。再添加一個(gè)選擇下拉列表框,用于實(shí)現(xiàn)組合條件邏輯運(yùn)算的選擇,其中包含邏輯與運(yùn)算和邏輯或運(yùn)算的選擇。

最后再添加三個(gè)命令按鈕,分別實(shí)現(xiàn):執(zhí)行最終結(jié)果的查詢(xún)、重新選擇新的查詢(xún)條件、結(jié)束查詢(xún)。

為了便于查看實(shí)現(xiàn)的SELECT查詢(xún)命令,我們可以添加一個(gè)多行文本框,將選擇過(guò)程中的命令顯示在多行文本框中。

在下方添加一個(gè)GridView控件,用來(lái)顯示組合查詢(xún)的結(jié)果。

其中包含的控件類(lèi)型及ID依次為:

包含查詢(xún)字段的下拉列表框(field_name)、包含關(guān)系運(yùn)算符的下拉列表框(operate)、輸入查詢(xún)值的文本框(query_value)、選擇邏輯運(yùn)算符的下拉列表框(logic_operate)、執(zhí)行查詢(xún)命令按鈕控件(search)、重新選擇命令按鈕控件(again)、結(jié)束命令按鈕控件(btn_ret)、選擇命令結(jié)果顯示文本框(command_display)、查選結(jié)果顯示在數(shù)據(jù)控件(result)。

2 執(zhí)行查詢(xún)過(guò)程

1)查詢(xún)下拉列表框中綁定的是可以使用查詢(xún)的全部字段,可以從中選擇要查詢(xún)的項(xiàng)目名稱(chēng);

2)從關(guān)系下拉列表框選擇要執(zhí)行的操作運(yùn)算符,其中包含模糊查詢(xún)的運(yùn)算符;

3)在輸入查詢(xún)值的文本框中輸入要查詢(xún)的值,回車(chē)確認(rèn),此時(shí)形成的SELECT命令就會(huì)顯示在命令結(jié)果顯示文本框中;

4)如果繼續(xù)選擇其他條件,單擊選擇邏輯運(yùn)算符的下拉列表框,從中選擇邏輯與或者邏輯或運(yùn)算;如果不再選擇其他查詢(xún)條件,可以直接點(diǎn)擊執(zhí)行查詢(xún)命令按鈕;

5)若繼續(xù)選擇,則重復(fù)前面的操作;若選擇執(zhí)行查詢(xún),則查詢(xún)結(jié)果會(huì)顯示在GridView控件中。

3 設(shè)計(jì)過(guò)程說(shuō)明

3.1 綁定要查詢(xún)的字段名

將需要查詢(xún)數(shù)據(jù)表:student_employee的字段名綁定到查詢(xún)字段的下拉列表框控件(field_name)上 ,為了便于用戶理解字段名稱(chēng)的含義,可以先建立一個(gè)數(shù)據(jù)字典的表,包含查詢(xún)數(shù)據(jù)表中的字段名和對(duì)應(yīng)的中文解釋。在沒(méi)有選擇要查詢(xún)的字段之前,關(guān)系運(yùn)算符的下拉列表框、輸入查詢(xún)值的文本框、邏輯運(yùn)算符的下拉列表框、執(zhí)行查詢(xún)命令按鈕的狀態(tài)都是不可使用的,可以將它們的Enabled屬性都為假值。

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{ SqlConnection cn = new SqlConnection(“server=.;database=employee;uid=sa;pwd=”);

cn.Open();

DataTable dt = new DataTable();

string sql = "SELECT Name FROM SysColumns WHERE id=Object_Id('student_employee')";

SqlDataAdapter da = new SqlDataAdapter(sql, cn);

da.Fill(dt);

field_name.DataValueField = "Name";

field_name.DataTextField = "Name";

field_name.DataSource = dt;

field_name.DataBind();

field_name.Items.Add("選擇字段...");

field_name.SelectedIndex = field_name.Items.Count - 1;

field_name.Enabled = true;

operate.Enabled = false;

query_value.Enabled = false;

logic_operate.Enabled = false;

search.Enabled = false;

command_display.Text = select_command;

}

}

3.2 選擇查詢(xún)的字段名

對(duì)于形成的查詢(xún)命令結(jié)果可以使用一個(gè)變量保存,在查詢(xún)開(kāi)始之前,對(duì)該變量進(jìn)行基本的初始化賦值,形成查詢(xún)命令的基本框架:

static string select_command = "select * from student_employee_info where (";

把從字段列表框中選擇查詢(xún)的字段名添加到命令變量中(要先將下拉列表框的AutoPostBack屬性設(shè)成True):

protected void field_name_SelectedIndexChanged(object sender, EventArgs e)

{

select_command = select_command + field_name.SelectedValue + " ";

field_name.Enabled = false;

operate.Enabled = true;

operate.Focus();

operate.SelectedIndex = operate.Items.Count - 1;

command_display.Text = select_command;

}

3.3 選擇運(yùn)算符

選擇字段名后,關(guān)系運(yùn)算符列表框就可以選擇操作了,從中選中某個(gè)運(yùn)算符之后,就可以在文本框中輸入要查詢(xún)的數(shù)據(jù)值了:

protected void operate_SelectedIndexChanged(object sender, EventArgs e)

{

string str;

field_name.Enabled = false;

operate.Enabled = false;

query_value.Enabled = true;

query_value.Focus();

query_value.Text="";

str = operate.SelectedValue;

switch (str)

{

case "=":

{

select_command = select_command + operate.SelectedValue + "'";

break;

}

case "!=":

{

select_command = select_command + operate.SelectedValue + "'";

break;

}

default:

{

select_command = select_command + " like '%";

break;

}

}

command_display.Text = select_command;

}

3.4 輸入要查詢(xún)的值

在文本框中輸入要查詢(xún)的字段值,直接回車(chē),邏輯運(yùn)算選擇框控件可用:

protected void query_value_TextChanged(object sender, EventArgs e)

{ logic_operate.SelectedIndex = logic_operate.Items.Count - 1;

field_name.Enabled = false;

operate.Enabled = false;

query_value.Enabled = false;

logic_operate.Enabled = true;

search.Enabled = true;

if(operate.SelectedValue=="like")

select_command = select_command +query_value.Text+ "%') ";

else

select_command = select_command + query_value.Text + "') ";

command_display.Text = select_command;

logic_operate.Focus();

}

3.5 選擇邏輯運(yùn)算符

以上操作過(guò)程完成了一個(gè)查詢(xún)條件的定義,如果還需要添加其他條件,可以從邏輯運(yùn)算符中選擇“與”或者“或”運(yùn)算,然后重復(fù)執(zhí)行2,繼續(xù)添加其他的條件;如果不希望添加其他條件則直接按“執(zhí)行查詢(xún)”命令按鈕,運(yùn)行查詢(xún)命令。

protected void logic_operate_SelectedIndexChanged(object sender, EventArgs e)

{

search.Enabled = false;

logic_operate.Enabled = false;

field_name.Enabled = true;

field_name.Focus();

select_command = select_command + logic_operate.SelectedValue + " (";

command_display.Text = select_command;

}

3.6 執(zhí)行查詢(xún)

單擊“執(zhí)行查詢(xún)”命令按鈕開(kāi)始查詢(xún),并將查詢(xún)結(jié)果綁定到GridView控件(ID:result)上。

protected void search_Click(object sender, EventArgs e)

{

SqlConnection cn = new SqlConnection(“server=.;database=employee;uid=sa;pwd=”);

cn.Open();

DataTable dt = new DataTable();

SqlDataAdapter da = new SqlDataAdapter(select_command, cn);

da.Fill(dt);

result.DataSource = dt;

result.DataBind();

send.Visible = true;

}

3.7 重新選擇

單擊“重新選擇”命令按鈕,清除前面的選擇結(jié)果。

protected void again_Click(object sender, EventArgs e)

{

field_name.SelectedIndex = field_name.Items.Count - 1;

logic_operate.SelectedIndex = logic_operate.Items.Count - 1;

operate.SelectedIndex = operate.Items.Count - 1;

field_name.Enabled = true;

operate.Enabled = false;

query_value.Enabled = false;

logic_operate.Enabled = false;

search.Enabled = false;

query_value.Text = "";

select_command = "select * from student_employee_info where (";

command_display.Text = select_command;

result.DataSource = null;

result.DataBind();

}

4 建議

該文只是針對(duì)一個(gè)數(shù)據(jù)表的查詢(xún)進(jìn)行了介紹,如果系統(tǒng)希望實(shí)現(xiàn)對(duì)多個(gè)數(shù)據(jù)表查詢(xún),可以創(chuàng)建一個(gè)查詢(xún)數(shù)據(jù)表,其中字段table_name包含可以查詢(xún)使用的表名,將需要的表明添加在此數(shù)據(jù)表中,可以先讓用戶選擇需要查詢(xún)的數(shù)據(jù)表名。然后再創(chuàng)建一個(gè)數(shù)據(jù)字典表,包含:table_name、field_name、field_explain字段,分別對(duì)應(yīng)數(shù)據(jù)表名、字段標(biāo)識(shí)、中文含義,當(dāng)用戶選擇要查詢(xún)的數(shù)據(jù)表之后,可以從中選擇該表的可以供查詢(xún)的字段綁定在字段選擇下拉列表框中,這樣就可以實(shí)現(xiàn)不同數(shù)據(jù)表的組合查詢(xún)了。

參考文獻(xiàn):

[1] 邵雨舟. 畢業(yè)生就業(yè)跟蹤系統(tǒng)中郵件群發(fā)功能的實(shí)現(xiàn)[J]. 電腦與電信, 2015(7).