C# winForm 多條件模糊查詢實現(主要講思路,請忽略與數據庫(sqlite)相關的代碼)


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();
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM