C# winForm 多条件模糊查询实现(主要讲思路,请忽略与数据库(sqlite)相关的代码)
2023-09-11 14:21:59 时间
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(); } }
相关文章
- Polymorphism (C# Programming Guide)
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
- C#比较两个字符串的相似度【转】
- 【C#】 三种计算程序运行时间的方法
- C#程序调用cmd执行命令
- C#实现卡尔曼滤波器
- C# Winform picturebox 通过button按钮 点击显示图片
- C#调用DLL的几种方法
- C#/Sqlite-单机Window 程序 sqlite 数据库实现
- C#/Sqlite-SQLite PetaPoco django 打造桌面程序
- 基于C#+SQlite开发(WinForm)个人日程管理系统【100010305】
- 基于C#+SQL Server开发(WinForm)租房管理系统【100010192】
- 基于C#+SQL Server(WinForm)学生选课及成绩查询管理系统【100010027】
- c# 静态变量
- C#并行计算语法教程与性能对比案例
- 【C#进阶3-7】C# Socket通讯
- 《C#零基础入门之百识百例》(六十)面向对象经典例题类 -- 图书管理系统
- C# 集合交、并、差、去重,对象集合交并差
- C#网络编程TCP通信实例程序简单设计
- C#-Get the generated SQL statement from a SqlCommand object?
- C#-winform-判断用户按下了Ctrl+S键
- C#实现Winform自定义半透明遮罩层
- C# WinForm设置透明
- C# winForm 多条件模糊查询实现(主要讲思路,请忽略与数据库(sqlite)相关的代码)
- C#+winform登陆界面案例
- C# 自定义控件制作和使用实例(winform)
- C# winform 启动外部程序
- [转]C# winform窗体(cs文件) .Designer.cs、.resx 文件分离出来 同级问题
- C# winform 读取数据库并显示成datagrid
- C# 委托和事件
- 对比swift、c#、java的getter和setter方法