zoukankan      html  css  js  c++  java
  • 简单的条件查询(用到:StringBuilder DataSet SqlDataAdapter DataGridView)

    功能:很简单的一个查询小程序 没什么技术 只是当做对于控件和一些类知识的理解

    程序图示:

    代码如下:

    首先要用到一个“应用程序配置文件App.config”

    1 <?xml version="1.0" encoding="utf-8" ?>
    2 <configuration>
    3     <connectionStrings>
    4         <add name="connStr" connectionString="Data Source=ZIP-CW\MSSQLSERVER0;Initial Catalog=MySchool;Integrated Security=True"/>
    5     </connectionStrings>
    6 </configuration>

    写好这个配置文件后,还要添加引用,在.NET中 选择System.Configuration;之后在Using System.Configuration就可以了。

    下面正式开始功能实现部分,这个部分最主要的问题在于where关键字什么时候有,什么时候没有。

    当三个条件都不选择的时候,就没有用到where;当三个里面至少有一个设置了查询条件,那么这时候就要用到where了。

    有两种方法可以做,一种是简单一些的利用where 1=1 (这个方法有很多问题,这里不讨论),还有一种设置了一个bool类型的参数作为判断。下面我将把两个方法都写一下。ps:这里面还有很多的处理方法,不在继续讨论了

    ①where 1=1

     1 using System.Data.SqlClient;
     2 using System.Configuration;
     3 
     4 namespace WfmDs
     5 {
     6     public partial class Form1 : Form
     7     {
     8         public Form1()
     9         {
    10             InitializeComponent();
    11         }
    12 
    13         string conStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //调用App.Config文件
    14 
    15         private void btnSearch_Click(object sender, EventArgs e)
    16         {
    17             string sql = "select * from [Student] where 1=1";  //这里用到了where 1=1
    18             if (txtName.Text != "")
    19             {
    20                 sql = sql + string.Format(" and sName like '%{0}%'",txtName.Text.Trim()); //记得加单引号
    21             }
    22             if (txtSex.Text != "")
    23             {
    24                 sql=sql+string.Format(" and sSex like '{0}'",txtSex.Text.Trim()); //Trim()方法去掉空格
    25             }
    26             if (txtAge.Text != "")
    27             {
    28                 sql = sql + string.Format(" and sAge like {0}",txtAge.Text.Trim());
    29             }
    30             GetStudent(sql);  //调用方法
    31 
    32         }
    33 
    34         private void Form1_Load(object sender, EventArgs e)
    35         {            
    36             string sql = "select * from [Student]";
    37             GetStudent(sql); //调用方法 
    38         }       
    39 
    40         private void GetStudent(string sql)
    41         {
    42             using (SqlConnection conn = new SqlConnection(conStr))
    43             {
    44                 DataSet ds = new DataSet(); //构造一个数据集
    45                 SqlDataAdapter sda = new SqlDataAdapter(sql, conn); //用法和SqlCommand一样  
    46                 sda.Fill(ds); //查询数据库
    47                 dgvStudent.DataSource = ds.Tables[0]; //把这个数据集的第0个表作为DataGridView数据源
    48             }
    49         }
    50        
    51     }
    52 }

    ②设置参数判读where

     1 namespace WfmDs
     2 {
     3     public partial class BetterSelect : Form
     4     {
     5         public BetterSelect()
     6         {
     7             InitializeComponent();
     8         }
     9 
    10         string conStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
    11 
    12         private void btnSearch_Click(object sender, EventArgs e)
    13         {            
    14             StringBuilder sql = new StringBuilder("select * from [Student]");
    15             bool hasWhere = false;
    16             if (txtName.Text != "")
    17             {
    18                 hasWhere = AppendWhere(sql,hasWhere);                
    19                 sql.AppendLine(" sName like '%"+txtName.Text.Trim()+"%'");
    20             }
    21             if(txtSex.Text!="")
    22             {
    23                 hasWhere = AppendWhere(sql,hasWhere);
    24                 sql.AppendLine(" sSex like '"+txtSex.Text.Trim()+"'");
    25             }
    26             if (txtAge.Text != "")
    27             {
    28                 hasWhere = AppendWhere(sql, hasWhere);
    29                 sql.AppendLine(" sAge like "+txtAge.Text.Trim());
    30             }
    31             GetStudent(sql.ToString());
    32         }
    33 
    34         private bool AppendWhere(StringBuilder sql, bool hasWhere)  //判断WHERE是否存在的方法
    35         {
    36             if (hasWhere == false)
    37             {
    38                 sql.AppendLine(" where");
    39                 return true; //这里返回true
    40             }
    41             else
    42             {
    43                 sql.AppendLine(" and");
    44                 return true;  //这里也要返回true
    45             }
    46         }
    47 
    48         private void BetterSelect_Load(object sender, EventArgs e)
    49         {
    50             string sql = "select * from [Student]";
    51             GetStudent(sql);
    52             txtClassId.DataBindings.Add("Text", dgvStudent.DataSource, "sClassId");  //这里用到了一个DataBindings属性,功能是鼠标选中的DataGridView 数据源的sClassId字段放到TextBox控件的Text中。
    53         }
    54 
    55         private void GetStudent(string sql)
    56         {
    57             using (SqlConnection conn = new SqlConnection(conStr))
    58             {
    59                 DataSet ds = new DataSet();
    60                 SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
    61                 sda.Fill(ds);
    62                 dgvStudent.DataSource=ds.Tables[0];
    63             }
    64         }
    65     }
    66 }

    这两个方法就是上面讲的这些。

    补充一个控件:

    txtClassId.DataBindings.Add("Text", dgvStudent.DataSource, "sClassId");这里用到了一个DataBindings属性,功能是鼠标选中的DataGridView 数据源的sClassId字段放到TextBox控件的Text中。

    ADO.NET结构图:(方便理解)

     

  • 相关阅读:
    Memcached 常用命令及使用说明
    Linux 搭建svn版本库
    实现word在线预览 有php的写法 也有插件似
    mysql引擎
    memcache的addServer的故障转移机制
    php伪静态配置
    使用MySQL的慢查询日志找到低效的SQL语句
    使用Snoopy进行模拟登陆、采集
    在线播放mp3代码(dewplayer)
    使用php发送电子邮件(phpmailer)
  • 原文地址:https://www.cnblogs.com/daban/p/2627839.html
Copyright © 2011-2022 走看看