自由组合查询
程序和数据库联合起来进行自由组合的查询
在做一个查询功能的时候,用户要根据很多的条件自己去进行任意的组合查询,当时想到了常用的if else,后来想到不行,并不能满足用户的要求,并且还有可能漏掉很多的可能性。于是采用下面的方法:
界面如图:
数据访问层的方法如下:
public DataTable GetMaterInfos(string machine, string slot, string feeder, string starttime, string endtime,string cpn, string username)
{
OracleConnection con = new OracleConnection(base.WebConfigurationConnectionStrings_MESDB());
DataTable dt = new DataTable();
string aa = "AND EQPNAME='"+machine+"'";
string bb = "AND SLOT='"+slot+"'";
string cc = "AND FEEDERNAME='"+feeder+"'";
string dd = "AND USERNAME='"+username+"'";
string ee = "AND PN='" + cpn + "'";
if (machine == "")
{
aa = string.Empty;
}
if (slot == "")
{
bb = string.Empty;
}
if (feeder == "")
{
cc = string.Empty;
}
if (username == "")
{
dd = string.Empty;
}
if (cpn == "")
{
ee = string.Empty;
}
string Sql = "SELECT MONAME,TASKNAME,EQPNAME,SLOT,PN,FEEDERNAME,UPNNAME,UPNQTY,DATETIME,USERNAME FROM GLB_MATERIALHISTORY " +
"WHERE to_date(DATETIME,'YYYY-MM-DD HH24:MI:SS') BETWEEN TO_DATE('" + starttime + "','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('" + endtime + "','YYYY-MM-DD HH24:MI:SS') "+aa+" "+bb+" "+cc+" "+dd+" "+ee+"";
OracleCommand comm = new OracleCommand();
comm.CommandType = CommandType.Text;
comm.CommandText = Sql;
comm.Connection = con;
OracleDataAdapter da = new OracleDataAdapter(comm);
da.Fill(dt);
return dt;
}
因为我不知道用户到底输入了哪几个值,所以如果按照平常那样的话当有一个值为空的时候就查不出来数据,SQL里面都是and,所以上面就让用户点击按钮了以后没有值的话就传入一个空的。问题就解决了、、、
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?