Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据
- 小弟在博客园驻园不久,初来咋到;将最近写的小程序附上,希望各位大牛们吐槽;激发对程序员围观的童鞋们,赶紧加入IT行业,如果你在上海那简称就是SHIT,哈哈题外话,以下开始切入正题:
坐公交车是旁边偶遇一小朋友,对我天朝区域不甚了解,为了偶的下一代不走回头路,激发爱国热情,故写下以下代码:
需求:
- 读取本地数据库(文本、Access);
- 根据省、市、县数据库切换,显示子级、父级;
以下是成形图:

实现步骤:
- 编写SqlHelper类(主要解决查询操作),代码如下
private static readonly string accessConn = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Directory.GetCurrentDirectory() + (@"\Areafull.accdb");
/// <summary>
/// 查询access数据,返回table
/// </summary>
/// <param name="sql">执行sql</param>
/// <param name="parameters">查询参数</param>
/// <returns></returns>
public static DataTable ExecuteAccessDateTable(string sql, params SqlParameter[] parameters)
{
using (OleDbConnection cnn = new OleDbConnection(accessConn))
{
cnn.Open();
using (OleDbCommand cmd = cnn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
OleDbDataReader apter = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(apter);
return dt;
}
}
}
2.界面设计
三个ListBox控件分别放入,省,市,县
/// <summary>
/// 初始化加载省数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DataTable table = SqlHelper.ExecuteAccessDateTable("select * from areafull where AreaPid='0'");
SlB.ItemsSource = GetAreas(table);//省份绑定
} /// <summary>
/// 省数据选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SlB_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Area areaRow = (Area)SlB.SelectedItem;
DataTable table = SqlHelper.ExecuteDateTable("select * from areafull where AreaPid=@AreaPid", new SqlParameter("@AreaPid", areaRow.AreaId));
SJBX.ItemsSource = GetAreas(table);
} /// <summary>
/// 市级数据选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SJBX_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (SJBX.SelectedItem != null)
{
Area areaRow = (Area)SJBX.SelectedItem;
DataTable table = SqlHelper.ExecuteDateTable("select * from areafull where AreaPid=@AreaPid", new SqlParameter("@AreaPid", areaRow.AreaId));
XJBX.ItemsSource = GetAreas(table);
}
else
{
XJBX.ItemsSource = null;
}
} /// <summary>
/// 数据转换对象
/// </summary>
/// <param name="table"></param>
/// <returns></returns>
private List<Area> GetAreas(DataTable table)
{
List<Area> lst = new List<Area>();
foreach (DataRow item in table.Rows)
{
Area are = new Area();
are.AreaId = Convert.ToInt32(item["Areaid"]);
are.AreaName = item["AreaName"].ToString();
are.AreaPid = Convert.ToInt32(item["AreaPid"]);
lst.Add(are);
}
return lst;
}
总结:
- 程序中主要用到数据转换对象的思想(Data——》Object);
- Ato.net本身提供的数据访问类;
需要数据库及源码的直接回复我
如在过程中提示未注册驱动,请到以下地址:下载安装即可
Ado.Net实现简易(省、市、县)三级联动查询,还附加Access数据的更多相关文章
- 省市区(县)三级联动代码(js 数据源)
ylbtech-JavaScript-Utility:省市区(县)三级联动代码(js 数据源) 省市区(县)三级联动代码(js 数据源) 1.A,源代码(Source Code)返回顶部 1.A.1, ...
- js之省市区(县)三级联动效果
省市区(县)三级联动效果,是我们软件开发比较常用的,特别是对一些crm,erp之类,当然也包括其他的后台管理系统,基本都涉及到,今天贴出这个常用的,方便个人复用和大家使用 <!DOCTYPE h ...
- html实现 省——市——区三级联动
html实现 省——市——区三级联动 html中实现三级联动是一个不错的demo,博主在这里跟大家分享一下实现的过程,以及自己在过程中出现的一些问题,仅供参考. 首先我们将全国的省市区数据导入进来, ...
- ajax(省,市,县)三级联动
下面我们用Jquery,ajax,做一个省,市,县的三级联动: 下面是我做三级联动下拉的步骤以及逻辑 第一步:先做一个省市区表格 第二步:建个PHP页面显示用我是在<body>里放< ...
- UIPickerView实现省 市 区三级联动
前几天用UIPickerView实现了一下三级联动具体的如下图
- 三级联动查询全国省市区(xml与数据库)
提供有china.xml和china.sql文件,实现全国省市区的三级联动效果 一.xml实现 import java.awt.EventQueue; import javax.swing.JFram ...
- Ajax案例:三级联动查询员工的信息(三张表进行内连接)
需求分析: 通过数据库连接池,可以查询到数据库中员工的各种信息,通过点击下拉框的方式实现三级联动,即:没有点击city下拉框,后面两个下拉框中没有值,这样,点击city下拉框,department下拉 ...
- ComboBox(下拉列表框)实现省、市、县三级联动,用hibernate连接数据库
package com.hanqi.web; import java.io.IOException; import java.util.List; import javax.servlet.Servl ...
- JQuery中国省市区无刷新三级联动查询
之前有写过用<Ajax控件来实现中国的省市区无刷新查询> 今天用JQuery来实现,用Ajax控件和JQuery的优缺点就先不说了. 效果图如下: 下面来结合代码来详细说明一下如何用JQu ...
随机推荐
- jqure全选/取消
平时我们会遇到全选/全取消, 前台效果: <div class="fix pb40 mt32 ml30 lh22"> <div class="l mr2 ...
- 20150506—WinForm自动生成按钮&按钮拖动
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- DOS删除服务
启动服务: net start 服务名 停止服务: net stop 服务名 卸载服务: 服务名 -uninstall 安装服务:sc create ser ...
- php面向对象的基础:创建OOP的方法
方法的创建 class Computer{ public function _run(){ return '我是类的一个公共方法'; } } $computer = new Computer(); / ...
- Eclipse+GitHub
之前一直想研究github的使用,但一直没时间,今天抽空学习了一下,发现真的是非常好用!!! 准备材料 1.你要有最新版的Eclipse(不要问我为什么要最新版的,反正我用的是最新版本) 2.一个gi ...
- .NET清除Session 的几个方法[clear/removeAll/remove/Abandon]
1.clear() 清空所有session对象的值,但保留会话 2.removeAll() 调用clear()方法 3.remove("SessionName") 删除某个 ...
- LiteHttp:一款‘智能’的HTTP框架类库
LiteHttp:一款‘智能’的HTTP框架类库(转自github) 简介 LiteHttp是一款简单.智能.灵活的HTTP框架库,它在请求和响应层面做到了全自动构建和解析,主要用于Android快速 ...
- MySQL基础操作命令
MySQL基础操作命令 1. 查看MySQL进程 ps -ef|grep mysql |grep -v grep 2. 查看MySQL端口 ss -lnt | grep 3306 3. MySQL的启 ...
- fast_recovery_area无剩余空间(ORA-19815)
一.问题现象 --执行日志切换时,夯住 SQL ('/u01/oradata/oracle/redo04.log') size 50m; SQL> alter system switch log ...
- linux下查看进程内存使用情况
1. top命令--动态查看一个进程的内存使用top -d 1 -p pid [,pid ...] //设置为delay 1s,默认是delay 3s 如果想根据内存使用量进行排序,可以shift ...