ylbtech-funcation-util:  C# 复杂条件查询(sql 复杂条件查询)查询解决方案

C# 复杂条件查询(sql 复杂条件查询)查询解决方案

1.A,Ylbtech.Model返回顶部
A.1,DepartmentInfo.cs
using System;
namespace Ylbtech.Model
{
/// <summary>
///DepartmentInfo 的摘要说明
///desc: 部门表
/// </summary>
public class DepartmentInfo
{
/// <summary>
/// 1,编号【PK】
/// </summary>
public int DepartmentId { get; set; }
/// <summary>
/// 部门名称
/// </summary>
public string DepartmentName { get; set; } public DepartmentInfo()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
}
}
 A.2,EmployeeInfo.cs
using System;

namespace Ylbtech.Model
{
/// <summary>
///EmployeeInfo 的摘要说明
///desc:员工表
/// </summary>
public class EmployeeInfo : DepartmentInfo
{
/// <summary>
/// 1,编号【PK】
/// </summary>
public int EmployeeId { get; set; }
/// <summary>
/// 身份证号
/// </summary>
public string Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Username { get; set; }
/// <summary>
/// 性别【C】男,女
/// </summary>
public string Sex { get; set; }
/// <summary>
/// 银行卡号
/// </summary>
public string CardNo { get; set; } /// <summary>
/// ,6 受雇日期
/// </summary>
public string HireDate { get; set; }
/// <summary>
/// 部门编号【Fk】
/// </summary>
public int DepartmentId { get; set; }
/// <summary>
/// 状态(正式内、正式外、中心版)
/// </summary>
public string State { get; set; }
/// <summary>
/// 转正日期
/// </summary>
public string ToRegularDate { get; set; }
/// <summary>
/// 地址
/// </summary>
public string Address { get; set; }
/// <summary>
/// 自有/租住
/// </summary>
public string IsRent { get; set; }
/// <summary>
/// 电话
/// </summary>
public string TelNo { get; set; } /// <summary>
/// FuJia:孩子的个数
/// </summary>
public int ChildrenNumber { get; set; }
/// <summary>
/// 儿童节发放金额
/// </summary>
public Decimal ChildrenMoney { get; set; }
/// <summary>
/// 序号
/// </summary>
public int SerialNumber { get; set; }
/// <summary>
/// 普通假日支付金额
/// </summary>
public Decimal PaymentAmount { get; set; }
/// <summary>
/// 奶粉费
/// </summary>
public Decimal NaiFenFei { get; set; }
/// <summary>
/// 医疗费用
/// </summary>
public Decimal YiLiaoFeiYong { get; set; }
/// <summary>
/// 合计
/// </summary>
public Decimal Total { get; set; }
/// <summary>
/// 文体费
/// </summary>
public Decimal WenTiFei { get; set; }
/// <summary>
/// 健身费
/// </summary>
public Decimal JianShenFei { get; set; }
/// <summary>
/// 卫生费【只有女职工有】
/// </summary>
public Decimal WeiShengFei { get; set; }
/// <summary>
/// 家财
/// </summary>
public Decimal JiaCai { get; set; }
/// <summary>
/// 人身意外
/// </summary>
public Decimal RenShenYiWai { get; set; }
/// <summary>
/// 女性特种疾病
/// </summary>
public Decimal NvXingTeZhongJiBing { get; set; }
/// <summary>
/// 交通意外
/// </summary>
public Decimal JiaoTongYiWai { get; set; }
public EmployeeInfo()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
}
}
1.B,Ylbtech.DAL返回顶部
 B.1,Employee.cs
using System;
using System.Collections.Generic;
using System.Linq; using Ylbtech.Model;
using Microsoft.DBUtility;
using System.Text;
using System.Data.SqlClient;
using Ylbtech.Common; namespace Ylbtech.DAL
{
/// <summary>
///Employee 的摘要说明
///desc:员工操作类
///author:yuanbo
///date:2013-6-12
/// </summary>
public class Employee
{
/// <summary>
/// ylb:查询员工信息
/// </summary>
/// <param name="dalEmployee"></param>
/// <returns></returns>
public static IList<EmployeeInfo> GetAllSearch(EmployeeInfo dalEmployee)
{
IList<EmployeeInfo> dals = new List<EmployeeInfo>(); string sql = "select employeeId,[id],username,sex,cardNo"
+ ",hireDate,e.departmentId,state,ToRegularDate,d.departmentName from Employee e inner join Department d on e.departmentId=d.departmentId"; StringBuilder sbSql = new StringBuilder();
sbSql.Append(sql); IList<SqlParameter> sqlParamI = new List<SqlParameter>(); if (dalEmployee.EmployeeId != ) /*单一查询条件*/
{
sqlParamI.Add(new SqlParameter("@employeeId", dalEmployee.EmployeeId));
sbSql.Append(" where employeeId=@employeeId");
}
else if (dalEmployee.Id.Length > ) /*单一查询条件*/
{
sqlParamI.Add(new SqlParameter("@id", dalEmployee.Id));
sbSql.Append(" where [id]=@id");
}
else /*复合条件查询*/
{
sbSql.Append(" where 1=1");
if (dalEmployee.Username.Length > )
{
sbSql.Append(" and username=@username");
sqlParamI.Add(new SqlParameter("@username", dalEmployee.Username));
}
if (dalEmployee.Sex != "-1")
{
sbSql.Append(" and sex=@sex");
sqlParamI.Add(new SqlParameter("@sex", dalEmployee.Sex));
}
if (dalEmployee.CardNo.Length > )
{
sbSql.Append(" and cardNo=@cardNo");
sqlParamI.Add(new SqlParameter("@cardNo", dalEmployee.CardNo));
}
DateTime hireDate;
if (DateTime.TryParse(dalEmployee.HireDate, out hireDate))
{
sbSql.Append(" and hiredate=@hiredate");
sqlParamI.Add(new SqlParameter("@hiredate", hireDate));
}
if (dalEmployee.DepartmentId != -)
{
sbSql.Append(" and e.departmentId=@departmentId");
sqlParamI.Add(new SqlParameter("@departmentId", dalEmployee.DepartmentId));
}
if (dalEmployee.State != "-1")
{
sbSql.Append(" and state=@state");
sqlParamI.Add(new SqlParameter("@state", dalEmployee.State));
}
DateTime toRegularDate;
if (DateTime.TryParse(dalEmployee.ToRegularDate, out toRegularDate))
{
sbSql.Append(" and toRegularDate=@toRegularDate");
sqlParamI.Add(new SqlParameter("@toRegularDate", dalEmployee.ToRegularDate));
}
}
sbSql.Append(" order by employeeId desc"); SqlParameter[] sqlParam = new SqlParameter[sqlParamI.Count]; //A:方式一
//for (int i = 0; i < sqlParamI.Count; i++)
//{
// sqlParam[i] = sqlParamI[i];
//}
//A:方式二
sqlParam = sqlParamI.ToArray(); using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.ConnStr_WelfareSystem, System.Data.CommandType.Text, sbSql.ToString(), sqlParam))
{
while (sdr.Read())
{
EmployeeInfo dal = new EmployeeInfo()
{
EmployeeId = sdr.GetInt32(),
Id = sdr[] == System.DBNull.Value ? "" : sdr.GetString(),
Username = sdr[] == System.DBNull.Value ? "" : sdr.GetString(),
Sex = sdr[] == System.DBNull.Value ? "" : sdr.GetString(),
CardNo = sdr[] == System.DBNull.Value ? "" : sdr.GetString(), HireDate = DateTimeFun.DateTimeConvertToyyyy_MM_dd(sdr[] == System.DBNull.Value ? "" : sdr.GetString()),
DepartmentId = sdr.GetInt32(),
State = sdr[] == System.DBNull.Value ? "" : sdr.GetString(),
ToRegularDate = DateTimeFun.DateTimeConvertToyyyy_MM_dd(sdr[] == System.DBNull.Value ? "" : sdr.GetString()),
DepartmentName = sdr[] == System.DBNull.Value ? "" : sdr.GetString()
}; dals.Add(dal); }
}
return dals;
} public Employee()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
}
}
1.C,Ylbtech.DBUtility返回顶部
 C.SqlHelper.cs [略]
1.D,Ylbtech.Common返回顶部
 D.1,DateTiemFun.cs
using System;

namespace Ylbtech.Common
{
/// <summary>
///DateTimeFun 的摘要说明
///日期操作相关函数
/// </summary>
public class DateTimeFun
{ /// <summary>
/// 1,判断字符串是否日期类型。如果是则转换为 yyyy-MM-dd,否则 赋值于 ""
/// </summary>
/// <param name="strDate"></param>
/// <returns></returns>
public static string DateTimeConvertToyyyy_MM_dd(string strDate)
{
string date = "";
DateTime toRegularDate;
if (DateTime.TryParse(strDate.Trim(), out toRegularDate))
{
date = toRegularDate.ToString("yyyy-MM-dd");
}
return date;
} public DateTimeFun()
{
//
//TODO: 在此处添加构造函数逻辑
//
}
}
}
1.E,Additional data返回顶部
 E.1,/App_Data
use master
go
-- =============================================
-- DatabaseName: WelfareSystem
-- remark: 福利发放系统
-- author: YuanBo
-- date: 09:51 2013-03-26
-- =============================================
IF EXISTS (SELECT *
FROM master..sysdatabases
WHERE name = N'WelfareSystem')
DROP DATABASE WelfareSystem
GO CREATE DATABASE WelfareSystem
GO
use WelfareSystem go
-- =============================================
-- ylb:1,部门表
-- =============================================
create table Department
(
departmentId int primary key identity(100,1), --编号【PK】
departmentName varchar(100) --部门名称
) go
-- =============================================
-- ylb:2,员工表
-- =============================================
create table Employee
(
employeeId int primary key identity(1001,1), --编号【PK】
[id] varchar(18), --身份证号
username varchar(40), --姓名
sex varchar(5) check(sex='男'or sex='女'),--性别
cardNo varchar(22), --银行卡号
hireDate datetime, --受雇日期
departmentId int, --部门编号
[state] varchar(8), --员工性质(正式内,正式入,中心版)
toRegularDate varchar(20), --转正日期
[address] varchar(200), --地址
isRent varchar(20), --自住/租房
telNo varchar(20) --家庭电话
) print'福利发放系统创建成功!'
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

util-C# 复杂条件查询(sql 复杂条件查询)查询解决方案的更多相关文章

  1. 模糊查询sql语句条件是中文在后台从数据库查不到结果,是英文和字母就可以,而且统一编码为UTF-8了!!!

    4.在mysql安装目录下打开my.ini文件 5.保存,接着打开电脑的服务选项,将MySQL 重启 6. 重启后重新进入dos 窗口的MySQL ,输入show variables like &qu ...

  2. 一条查询sql的执行流程和底层原理

    1.一条查询SQL执行流程图 2.查询SQL执行流程之发送SQL请求 (1)客户端按照Mysql通信协议将SQL发送到服务端,SQL到达服务端后,服务端会单起一个线程执行SQL. (2)执行时Mysq ...

  3. JPA多条件复杂SQL动态分页查询

    概述 ORM映射为我们带来便利的同时,也失去了较大灵活性,如果SQL较复杂,要进行动态查询,那必定是一件头疼的事情(也可能是lz还没发现好的方法),记录下自己用的三种复杂查询方式. 环境 spring ...

  4. 通过带参数的Sql语句来实现模糊查询(多条件查询)

    #region 通过带参数的Sql语句来实现模糊查询(多条件查询) StringBuilder sb = new StringBuilder("select * from books&quo ...

  5. Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询

    原文:Linq to Sql:N层应用中的查询(下) : 根据条件进行动态查询 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候, ...

  6. 什么时候出现死锁,如何解决?mysql 引擎? 多个like or 查询sql如何优化?什么是常量池?for条件执行顺序

    1. 什么时候出现死锁,如何解决?mysql 引擎? 多个like or 查询sql如何优化? 资源竞争导致死锁,比如A B 同时操作两条记录,并等待对方释放锁. 优化sql, 加缓存,主从(如读写分 ...

  7. 多条件搜索问题 -sql拼接与参数化查询

    来源:传智播客  免费开发视频. 问题:根据书名或出版社或作者查询书籍信息. using System; using System.Collections.Generic问题; using Syste ...

  8. Mybatis中动态SQL多条件查询

    Mybatis中动态SQL多条件查询 mybatis中用于实现动态SQL的元素有: if:用if实现条件的选择,用于定义where的字句的条件. choose(when otherwise)相当于Ja ...

  9. Database基础(三):SQL数据导入/导出、 操作表记录、查询及匹配条件

    一.SQL数据导入/导出 目标: 使用SQL语句完成下列导出.导入操作: 将/etc/passwd文件导入userdb库userlist表并给每条记录加编号 将userdb库userlist表中UID ...

随机推荐

  1. struts2-2.3.4.1的struts-default.xml源码

    <?xml version="1.0" encoding="UTF-8" ?> <!-- /* * $Id: struts-default.x ...

  2. String类的使用 Part1

    String类的属性 1:Chars属性 获取当前 String 对象中位于指定位置的 Char 对象. 2:Length属性 获取当前 String 对象中的字符数. eg:获取字符串中  字母, ...

  3. [转]C++常见内存错误汇总

    在系统开发过程中出现的bug相对而言是比较好解决的,花费在这个上面的调试代价不是很大,但是在系统集成后的bug往往是难以定位的bug(最好方式是打桩,通过打桩可以初步锁定出错的位置,如:进入函数前打印 ...

  4. 检测系统是X86系统,还是X64系统

    function IsWin64: Boolean; var Kernel32Handle: THandle; IsWow64Process: function(Handle: Windows.THa ...

  5. Android 对话框弹出位置和透明度的设置

    在Android中 我们经常会用AlertDialog来显示对话框.通过这个对话框是显示在屏幕中心的.但在某些程序中,要求对话框可以显示在不同的位置.例如,屏幕的上 方或下方.要实现这种效果.就需要获 ...

  6. POI 中的CellRangeAddress 参数

    在用poi在EXECL报表设计的时候,遇到单元格合并问题,用到一个重要的函数: CellRangeAddress(int, int, int, int) 参数:起始行号,终止行号, 起始列号,终止列号 ...

  7. highcharts 结合phantomjs纯后台生成图片

    highcharts 结合phantomjs纯后台生成图片 highcharts 这个图表展示插件我想大家应该都知道,纯javascript编写,相比那些flash图表插件有很大的优势,至少浏览器不用 ...

  8. 有关于kali linux安装eclipse出现的一系列问题

    第一步下载jdk,以及eclipse我就不再细说/官网都有的下载.(记得下载自己对应的版本就好了) 对于kali linux有这么一个问题,也是一直惹大家烦恼的问题--kali linux自带了jav ...

  9. js实现ppt

    实现ppt的js框架有很多,这里推荐几个: impress.js      impress.js demo webSlide.js    webSlide.js demo reveal.js      ...

  10. Effective C++学习笔记 条款04:确定对象被使用前已先被初始化

    一.为内置类型对象进行手工初始化,因为C++不保证初始化它们. 二.对象初始化数据成员是在进入构造函数用户编写代码前完成,要想对数据成员指定初始化值,那就必须使用初始化列表. class A { pu ...