1.窗體設計
2.思路
通過遍歷數組生成查詢條件和查詢
3.代碼
private void BtnSerch_Click(object sender, EventArgs e) {//開始查詢按鈕 SerOrder();//查詢訂單 }
private void BtnSerClean_Click(object sender, EventArgs e) {//清空查詢條件按鈕 DgvSer.Rows.Clear(); TxbSerOrderID.Text = ""; TxbSerMemberID.Text = ""; TxbSerCompany.Text = ""; TxbSerCustomer.Text = ""; TxbSerPhone.Text = ""; TxbSerAdd.Text = ""; CmbSerOpener.Text = ""; CmbSerInstaller.Text = ""; TxbSerOrderSum.Text = ""; CmbSerPrinted.Text = ""; //清空日歷 DateTimePicker1.Format = DateTimePickerFormat.Custom; DateTimePicker1.CustomFormat = " "; TxbSerOrderID.Focus(); }
private void SerOrder() {//查詢訂單 DgvSer.Rows.Clear();//初始化datagridview //查詢語句參數值 string[] paras = { TxbSerOrderID.Text.Trim(), DateTimePicker1.Text.Trim(), TxbSerMemberID.Text.Trim(), TxbSerCompany.Text.Trim(), TxbSerCustomer.Text.Trim(), TxbSerPhone.Text.Trim(), TxbSerAdd.Text.Trim(), CmbSerOpener.Text.Trim(), CmbSerInstaller.Text.Trim(), TxbSerOrderSum.Text.Trim(), CmbSerPrinted.Text.Trim() }; //數據表列名 string[] columns = { "OrderID", "BillingDate", "MemberID", "CompanyName", "CustomerName", "CellphoneNumber", "CustomerAddress", "Opener", "Installer", "OrderSum", "printed" }; string sqlStr = "select * from orders "; string[] condition = { };//查詢語句條件 List<string> condition2 = condition.ToList();//數組轉列表 using (SQLiteConnection conn = new SQLiteConnection(dbPath)) {//連接數據庫 if (conn.State == ConnectionState.Closed) { conn.Open(); } SQLiteCommand cmd = conn.CreateCommand(); for (int i = 0; i < paras.Length; i++) {//生成查詢語句&查詢條件 if (paras[i] == "") { continue; } condition2.Add(columns[i] + " like @" + columns[i]); cmd.Parameters.Add(new SQLiteParameter("@" + columns[i], "%" + paras[i] + "%")); } condition = condition2.ToArray(); if (condition.Length > 0) {//有查詢條件 string result = String.Join(" and ", condition); sqlStr += ("where " + result + ";"); } cmd.CommandText = sqlStr; SQLiteDataReader reader = cmd.ExecuteReader(); int cols = DgvSer.ColumnCount; if (reader.HasRows) {//顯示查詢結果 while (reader.Read()) {//遍歷行 int index = DgvSer.Rows.Add(); for (int i = 0; i < cols - 3; i++) {//遍歷列 if (i == 0) {//行號 DgvSer.Rows[index].Cells[i].Value = (index + 1).ToString(); } else { DgvSer.Rows[index].Cells[i].Value = reader.GetValue(i).ToString(); } } } } //關閉數據庫連接 reader.Close(); conn.Close(); } }