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 ...
随机推荐
- Jfinal----Handler之责任链设计模式
Jfinal handler的处理采用了责任链设计模式 有关责任链模式,推荐看: <JAVA与模式>之责任链模式 1.实现Handler只需要继承Handler public class ...
- ASP.NET MVC 4框架揭秘(微软6任MVP,高级软件顾问蒋金楠新作)
http://www.cnblogs.com/artech/
- Exchange 2010先决条件
为了方便大家一步到位的进行学习,已将各种角色安装所需的先决条件给与总结了,但注意系统需求是2008 R2 1.对于执行客户端访问.集线器传输及邮箱角色典型安装的服务器 ( ...
- 读书笔记-UIView与控件
1.UIView 在Objective-C中,NSObject是所有类的“根”类.同样,在UIKit框架中,也存在一个如此神奇的类UIView.从继承关系上看,UIView是所有视图的根. 1.1.U ...
- c# 读取远程主机性能计数器
PerformanceCounter pc = new PerformanceCounter("Web Service", "Current Connections&qu ...
- C# Winform里面用Console.WriteLine输出到哪了
C# Winform里面用Console.WriteLine输出也不会报错 显示在 VS IDE 的视图→输出窗口,且只在 Debug 环境下此语句执行. 如果是 Release 环境,在 Win32 ...
- AMQ学习笔记 - 16. 确认机制的测试
概述 对Acknowledge机制进行测试. 此处的测试是针对Consumer的确认设计的:对于Producer的确认是透明的,无法提供测试. 测试实例 设计demo,测试三种确认机制. 测试机制 测 ...
- MYSQL基础02(查询)
查询是很大的一块,所以这里我只会写mysql的特点,就我目前使用的情况,MYSQL对标准SQL是比较支持,如果是新手的话,建议去w3school 学习标准SQL. 1.DUAL DUAL是一个虚拟表, ...
- html5定位并在百度地图上显示
在开发移动端 web 或者webapp时,使用百度地图 API 的过程中,经常需要通过手机定位获取当前位置并在地图上居中显示出来,这就需要用到html5的地理定位功能. navigator.geolo ...
- python+selenium环境配置(windows7环境)
下载python[python开发环境] http://python.org/getit/ 下载setuptools[python的基础包工具] http://pypi.python.org/pypi ...