研究问题的策略:把复杂问题简单化,逻辑化,一切问题皆迎刃而解。
开发项目时常用的“查询”按钮,即是查询语句实现的,下面我们来一步一步分析。
1、查询语句
select * from table1 where name='li' order by ID
理解:找好顺序,简单罗列
(1)语法:
select "对应字段" from "表" where "条件" order by "字段或其他方式"
(2)引用控件中的内容时使用 '" + 控件id + "'
(3)多条件查询时用and连接
eg. select * from Depart where DepCode = '" + oEntity.Depcode +"'and DepName = '" + oEntity.Depname + "' order by DepOrder
注意:
(1)这里oEntity是实体类,用于建立表中的各个字段,这样就可以方便的在程序中以oEntity.Depcode 这种方式使用Depcode这个字段。也便于项目建立分层结构。
(2)实体类生成方法:可在网上搜索实体类生成软件,直接使用即可,也可以自己编写;建好表后用实体类生成软件生成实体类;在程序的开头引用该实体类,即using “实体类在项目中的存放位置”
如:using operation.entity;
2、代码实现
结构:
(1)sql语句编写(这是核心)
(2)创建虚拟数据库——》生成sql命令——》执行sql命令
(3)可在(1)(2)步骤添加相关限制
代码:
应用微软企业库,添加引用using Microsoft.Practices.EnterpriseLibrary.Data;
public DataTable Search(string id, string name) {
string sql = "select DeptType from Dept where 1=1 ";
if (id != "") sql += " and id = '" + id+ "'"; //根据控件内容限制查询
if (name != "") sql += " and name = '" + name+ "'";
sql += " group by DeptType"; //分组限制
sql += " order by sum(DeptOrder)/count(DeptType)"; //排序限制
Database db = DatabaseFactory.CreateDatabase();
DBCommandWrapper cmd = db.GetSqlStringCommandWrapper(sql);
return db.ExecuteDataSet(cmd).Tables[0];
}
查询按钮事件:
protected void btnSearch_Click(object sender, EventArgs e) {
string sql = "select * from DeptIn where DeptInId='" + txtDept.Text.ToString() + "'";
Database db = DatabaseFactory.CreateDatabase();
DBCommandWrapper cmd = db.GetSqlStringCommandWrapper(sql);
DataSet ds = new DataSet();
ds = db.ExecuteDataSet(cmd);
GridView1.DataSource = ds;
GridView1.DataBind();
}
注:根据textbox中的内容查询对应记录,查询语句执行后需要与GridView1绑定,这样才能实时显示查询结果。这里用的是数据集绑定的。