SQLServer 实现简单的省市区联动「建议收藏」

SQLServer 实现简单的省市区联动「建议收藏」今天研究了一下SQL Server实现省市区联动的方法,记录一下。 一、先创建三个表,Dic_Area(区)、Dic_City(市)和Dic_Province(省),三个表建表语句如下: 1 crea

SQLServer 实现简单的省市区联动

今天研究了一下SQL Server实现省市区联动的方法,记录一下。

一、先创建三个表,Dic_Area(区)、Dic_City(市)和Dic_Province(省),三个表建表语句如下:

SQLServer 实现简单的省市区联动「建议收藏」

1 create table Dic_Province
2 (
3   id int NOT NULL,
4   provinceID varchar(6) default NULL,
5   province varchar(40) default NULL,
6   PRIMARY KEY  (id)
7 )

代码100分

Dic_Province

SQLServer 实现简单的省市区联动「建议收藏」

代码100分1 create table Dic_City
2 (
3   id int NOT NULL,
4   cityID varchar(6) default NULL,
5   city varchar(50) default NULL,
6   provinceid varchar(6) default NULL,
7   PRIMARY KEY  (id)  
8 )

Dic_City

SQLServer 实现简单的省市区联动「建议收藏」

1 CREATE TABLE Dic_Area 
2 (
3   id int NOT NULL,
4   areaID varchar(50) default NULL,
5   area varchar(60) default NULL,
6   cityID varchar(6) default NULL,
7   primary key(id)
8 )

Dic_Area

插入数据,(数据来源https://www.cnblogs.com/zhu520/p/8244578.html),因为实在是有点懒,只能网上借用一下这位兄台的数据了。插入数据就不说了,复制或者下载过来改一下表名执行就ok。

 

二、新建一个Windows窗体应用,插入3个ComboBox,命名分别为:cbo_Province、cbo_City、cbo_District。

先声明一个连接字符串:

代码100分1 private string connStr = @"Data Source=SD-20191219LHFXSQLEXPRESS;Initial Catalog=AreaSelection;User ID=sa;Password=***********"; //连接字符串

接下来在Form1_Load中添加预加载代码,程序运行的时候ComboBox中就要加载显示地区信息。

1 private void Form1_Load(object sender, EventArgs e)
2 {
3      LoadingProvice();
4 }

为了代码清晰,我把省市区分别封装成三个方法:LoadingProvice()、LoadingCity()、LoadingDistrict()。

但是在这之前,我们要先构造一个集合,因为cbo_Province可以调用DataSource这个方法。三个表中,每个表都有ID和地区名字,所以新建一个类AreaInfo.cs就可以了:

SQLServer 实现简单的省市区联动「建议收藏」

在AreaInfo中添加下面的代码:

1 public partial class AreaInfo
2 {
3     public int Id { get; set; } //ID
4     public string Title { get; set; } //地区名字
5 }

接下来就可以写方法了:(以下分别是省、市、区)

 1 private void LoadingProvice()
 2 {
 3     List<AreaInfo> list = new List<AreaInfo>();
 4     using(SqlConnection conn = new SqlConnection(connStr))
 5     {
 6          string sql = "select * from Dic_Province";
 7          SqlCommand cmd = new SqlCommand(sql, conn);
 8          conn.Open();
 9          SqlDataReader reader = cmd.ExecuteReader();
10 
11          while (reader.Read())
12          {
13              //添加元素
14              list.Add(new AreaInfo()
15              {
16                  //初始化器
17                  Id = Convert.ToInt32(reader["ProvinceID"]),
18                  Title = reader["Province"].ToString()
19              });
20          }
21      }
22      cbo_Province.DisplayMember = "Title"; //显示属性
23      cbo_Province.ValueMember = "Id"; //值属性
24      cbo_Province.DataSource = list;
25 }

 1 private void LoadingCity()
 2 {
 3      int pid = Convert.ToInt32(cbo_Province.SelectedValue);
 4      List<AreaInfo> list = new List<AreaInfo>();
 5      string sql = "select * from Dic_City where provinceid = @pid";
 6      using(SqlConnection conn = new SqlConnection(connStr))
 7      {
 8           SqlCommand cmd = new SqlCommand(sql, conn);
 9           cmd.Parameters.Add(new SqlParameter("@pid", pid));
10           conn.Open();
11           SqlDataReader reader = cmd.ExecuteReader();
12           while(reader.Read())
13           {
14                list.Add(new AreaInfo()
15                {
16                     Id = Convert.ToInt32(reader["cityID"]),
17                     Title = reader["city"].ToString()
18                });
19           }
20      }
21      cbo_City.DisplayMember = "Title";
22      cbo_City.ValueMember = "Id";
23      cbo_City.DataSource = list;
24 }

 1 private void LoadingDistrict()
 2 {
 3      List<AreaInfo> list = new List<AreaInfo>();
 4      int cid = Convert.ToInt32(cbo_City.SelectedValue);
 5      string sql = "select * from Dic_Area where cityID = @cid";
 6      using(SqlConnection conn = new SqlConnection(connStr))
 7      {
 8           SqlCommand cmd = new SqlCommand(sql, conn);
 9           cmd.Parameters.Add(new SqlParameter("@cid", cid));
10           conn.Open();
11           SqlDataReader reader = cmd.ExecuteReader();
12           while(reader.Read())
13           {
14                list.Add(new AreaInfo()
15                {
16                    Id = Convert.ToInt32(reader["areaID"]),
17                    Title = reader["area"].ToString()
18                });
19           }
20        }
21        cbo_District.DisplayMember = "Title";
22        cbo_District.ValueMember = "Id";
23        cbo_District.DataSource = list;
24 }

每个方法大同小异,都是对数据库的基本操作,就没进行过多的注释。

最后在comboBox的SelectedIndexChanged方法中添加方法名,如下:

1 private void cbo_provice_SelectedIndexChanged(object sender, EventArgs e)
2 {
3       LoadingCity();
4       LoadingDistrict();
5 }

1 private void cbo_City_SelectedIndexChanged(object sender, EventArgs e)
2 {
3       LoadingDistrict();
4 }

cbo_District控件下面就不需要添加方法了,因为区下面就没有分类了。

完成界面如下:

SQLServer 实现简单的省市区联动「建议收藏」

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7876.html

(0)
上一篇 2023-03-12 11:30
下一篇 2023-03-12

相关推荐

  • MySQL 存储引擎(2)[通俗易懂]

    MySQL 存储引擎(2)[通俗易懂]首先我们带着下边三个问题来认识存储引擎 存储引擎在MySQL中的作用是什么? MySQL都有哪些存储引擎 SQL又与存储引擎有什么关系? 存储引擎在MySQL中的作用是什么? 顾名思义,存储引擎就是…

    2023-02-18
    153
  • Python字符串长度操作

    Python字符串长度操作
    字符串是编程语言中经常使用的基本数据类型之一。在Python中,字符串不只是字符集合,而且还是不可变的序列。因此,正确地理解和使用字符串的操作至关重要。其中一个重要的操作就是使用Python字符串长度返回字符串的长度。本文将向您介绍如何使用Python字符串长度操作,包括如何获取字符串的长度,如何使用len()函数等。

    2024-04-30
    68
  • 操作系统和系统相关的Python模块

    操作系统和系统相关的Python模块Python的os模块是操作系统相关的函数库,可以实现操作系统的许多功能。常用的功能包括文件处理、进程管理、系统参数和环境变量等。

    2024-01-24
    110
  • Python字典:快速查找和管理数据

    Python字典:快速查找和管理数据Python是一种强大的编程语言,拥有多种数据结构来帮助开发人员处理和管理数据。字典(Dictionary)是Python中最常用的数据结构之一。Python字典提供了基于键(key)和值(value)的快速查找和管理数据的方式。当你需要管理键和值对应关系时,Python字典是最为合适的选择。

    2024-03-03
    77
  • 一文带你体验MRS HetuEngine如何实现跨源跨域分析「终于解决」

    一文带你体验MRS HetuEngine如何实现跨源跨域分析「终于解决」摘要: HetuEngine作为MRS服务中交互式分析&多源统一SQL引擎,亲自全程体验其如何实现多数据源的跨源跨域分析能力。 本文分享自华为云社区《MRS HetuEngine体验

    2023-06-05
    147
  • InnoDB Buffer Pool[亲测有效]

    InnoDB Buffer Pool[亲测有效]Buffer Pool本质上是InnoDB向操作系统申请的一段连续的内存空间,可以通过innodb_buffer_pool_size来调整它的大小。 Buffer Pool内部组成:Buffer P…

    2023-03-04
    161
  • 如何卸载anaconda3

    如何卸载anaconda3anaconda是一款Python编程环境及数据科学工具,常用于数据挖掘和数据分析。在使用anaconda的过程中,可能会遇到一些问题或者需要更改版本,因此需要卸载anaconda。本文将从多个方面介绍如何卸载anaconda3。

    2024-04-28
    74
  • Python Numbers的数据分析和可视化优化

    Python Numbers的数据分析和可视化优化Python是一种易学易懂的编程语言,它已成为许多程序员和工程师的首选语言。Python的丰富库使它成为数据分析和可视化的高效工具。在本文中,我们将详细探讨Python Numbers模块的数据分析和可视化优化,并提供示例代码。

    2024-02-27
    110

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注