zoukankan      html  css  js  c++  java
  • 分页查询+组合查询

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Collections;
    using System.Data.SqlClient;
    
    /// <summary>
    /// CeshiData 的摘要说明
    /// </summary>
    public class CeshiData
    {
        SqlConnection conn = null;
        SqlCommand cmd = null;
        public CeshiData()
        {
            conn = new SqlConnection("server=.;database=Data0425;user=sa;pwd=123;");
            cmd = conn.CreateCommand();
        }
        public List<Ceshi> Select(string Tsql, Hashtable hh)
        {
            List<Ceshi> list = new List<Ceshi>();
            cmd.CommandText = Tsql;
            cmd.Parameters.Clear();
            foreach (string k in hh.Keys)
            {
                cmd.Parameters.Add(k, hh[k]);
            }
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    Ceshi c = new Ceshi();
                    c.Ids = Convert.ToInt32(dr[0]);
                    c.Name = dr[1].ToString();
                    c.Sex = dr[2].ToString();
                    list.Add(c);
                }
            }
            conn.Close();
            return list;
        }
    }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Collections;
    public partial class Defaulet1 : System.Web.UI.Page
    {
        int PageCount = 5;//一页最多显示5条
        Hashtable hs = new Hashtable();
        protected void Page_Load(object sender, EventArgs e)
        {
            Button1.Click += Button1_Click;//条件查询
            button_Prev.Click += button_Prev_Click;
            button_Next.Click += button_Next_Click;
             if(IsPostBack==false)
            {
                Repeater1.DataSource = new CeshiData().Select(TSQL(1), hs);//注意 哈希表写法
                Repeater1.DataBind();
            }
        }
        //下一页写法
        void button_Next_Click(object sender, EventArgs e)
        {
            if (Label2.Text == MaxNumber().ToString())
            {
                return;//跳出
            }
            //1.看看当前是第几页,然后将页数+1
            int pagenumber = Convert.ToInt32(Label2.Text) + 1;//获取下一页的页数,默认其实页数是1!!!!!!!!
            Label2.Text = pagenumber.ToString();//页面显示页数+1
           //2.再然后将+1后的页面显示的数据查出来绑定
            Repeater1.DataSource = new CeshiData().Select(TSQL(pagenumber), hs);//一页对应多个哈希表数据
            Repeater1.DataBind();
            Label1.Text = TSQL(pagenumber);
        }
        //上一页
        void button_Prev_Click(object sender, EventArgs e)
        {
            if(Label2.Text=="1")//第一页直接返回
            {
            return ;
            }
            //1.看看当前是第几页,然后将页数加-1
            int PageNumber=Convert.ToInt32(Label2.Text)-1;//获取下一页的页数
            Label2.Text=PageNumber.ToString();
            //2.然后再将-1后的页数数据查询出来绑定
            Repeater1.DataSource=new CeshiData().Select(TSQL(PageNumber),hs);
            Repeater1.DataBind();
            Label1.Text=TSQL(PageNumber);
        }
        //条件查询
        void Button1_Click(object sender ,EventArgs e)
        {
            //1.将语句拼完-调用Tsql()方法
            //2.用拼完的语句查询数据并绑定
            Repeater1.DataSource=new CeshiData().Select(TSQL(1),hs);
            Repeater1.DataBind();
            Label1.Text=TSQL(1);
            Label2.Text="1";
        }
        //核心,如何返回TAQL语句是难点
        private string TSQL(int PageNumber)
        {
        hs.Clear();
        int cc=0;//记录下一条查询数据
        string sql="select top"+PageCount+"*from Ceshi";
        string t1="";
        string t2="";
       //1.将条件查询的语句拼完
        if(TextBox1.Text!="")
    {
    sql+="where Name like @name";
    cc++;
    t1="where Name like #name";
    hs.Add("@name","%"+TextBox1.Text+"%");
    }
            if (TextBox2.Text!="")//判断性别
            {
                if(cc>0)
                {
                sql+="and sex like @sex";
                t2="and sex like @sex";
                }
                else
                {
                sql+="where sex like @sex";
                t2="where sex like @sex";
                }
                hs.Add("@sex","%"+TextBox2.Text+"%");
                cc++;
            }
            //2.将分页的语句拼完
            if(cc>0)
            {
            sql+="and Ids not in(select top "+(PageCount*(PageNumber-1))+"Ids from CeShi"+t1+t2+")";
            }
            else 
            {
            sql+="whrere Ids not in(select top"+(PageCount*(PageNumber-1))+"Ids from Ceshi"+t1+t2+")";
            }
            return sql;
        }
        //查询全部的复合条件的数据
        private string TSQL1()
        {
        int CC=0;//记录一下查询的条数
        string sql="select * from Ceshi";
        //1.将条件查询的语句拼完
            if(TextBox1.Text!="")
            {
                sql+="where name like '%"+TextBox1.Text+"%'";//单引号层级大于双引号
                CC++;
        }
            if (TextBox2.Text!="")
            {
            if (CC>0)
            {
                sql+="where sex like '%"+TextBox2.Text+"%'";
            }
                else
            {
            sql+="where sex like '%"+TextBox2.Text+"%'";
            }
                CC++;
            }
            return sql;
        }
        private  int MaxNumber()
        {
        List<Ceshi>CCC=new CeshiData().Select(TSQL1(),hs);
        double bbb=CCC.Count/(PageCount*1.0);//总页数,浮点型,防止最后一页不是整数
        return Convert .ToInt32(Math.Ceiling(bbb));//取上限
        }
        //1.做一个功能,先考虑,如何把他们合并起来
       //2.如何合并?看看他们有什么共同点-都是拼TSQL语句
        //3.再一步一步按照主要功能来做
       
    }
  • 相关阅读:
    ll command not found 当ll无法识别的解决办法
    idea控制台全屏
    查看centos版本号
    java Error: 无法访问org.apache.http.annotation.ThreadSafe 找不到org.apache.http.annotation.ThreadSafe的类文件
    DigestUtils.md5Hex()加密
    JAVA 8 '::' 关键字
    CVE-2020-1472 NetLogon特权提升漏洞
    OpenSSH的scp命令注入漏洞(CVE-2020-15778)
    redis未授权访问漏洞&简单利用&总结
    常见web信息泄露
  • 原文地址:https://www.cnblogs.com/suiyuejinghao123/p/5706018.html
Copyright © 2011-2022 走看看