查询省市区信息的数据库技巧 (省市区数据库查询)

随着互联网的发展,省市区信息查询已经成为了日常生活中不可或缺的事情。同时,随着对于城市规划的越来越重视,对于省市区信息的需求也越来越高。在这种情况下,我们需要能够高效地。

一、数据库的设计

我们需要了解数据库的设计。数据库的设计包括三层结构,分别为外模型、逻辑模型和物理模型。外模型是针对用户的,也就是用户能够看到和使用的模型;逻辑模型是对于数据库内部结构的抽象,是一种中间层;物理模型则是和具体的数据库管理软件有关系的,是一种具体实现。

在设计数据库时,我们需要考虑以下几点:

1. 数据库设计应该符合范式。

2. 字段名应该与业务相关,语义明确。

3. 数据类型应该选择符合实际情况的类型,避免数据冗余。

4. 数据库命名应该以业务为主,简洁明了。

二、SQL查询语句

在数据库的使用过程中,SQL查询语句是必不可少的。SQL是结构化查询语言的缩写,是操作数据库的通用语言。下面介绍一些常用的SQL查询语句:

1. SELECT:查询数据,常用语句。

2. WHERE:用于筛选符合条件的数据。

3. GROUP BY:按照某个字段进行分组。

4. ORDER BY:按照某个字段进行排序。

5. JOIN:将多个表连接起来进行查询。

6. HAVING:用于筛选分组后符合条件的数据。

三、省市区信息的查询

在查询省市区信息时,我们需要涉及到中国地图的经纬度信息,同时需要有城市与行政区划的对照表。下面以查询北京市信息为例,介绍如何查询省市区信息。

1. 查询北京市行政区划信息

北京市行政区划信息包括了市、区、街道办事处等信息,我们需要查询的是这些信息,并将其按照层级显示。查询语句如下:

SELECT * FROM area WHERE area_name = ‘北京市’;

其中,area_name表示地区名称,* 表示全部字段。

2. 查询北京市各区县信息

查询北京市各区县信息时,我们需要使用到“JOIN”语句,将中国城市及行政区划对照表与其它信息表连接起来进行查询。查询语句如下:

SELECT a.area_name AS province_name, b.area_name AS city_name, c.area_name AS area_name FROM area a

LEFT JOIN area b ON a.id = b.parent_id

LEFT JOIN area c ON b.id = c.parent_id WHERE a.area_name = ‘北京市’ and c.level = 3;

其中,a.area_name表示省名,b.area_name表示市名,c.area_name表示区名,level表示区划层级。

以上就是,我们需要根据实际需求进行查询,同时结合SQL语法进行提高效率。希望本文对您有所帮助。

相关问题拓展阅读:

  • 谁有全国银行的联行号数据库,更好是省市区版的
  • 省市区 地址联动 数据怎么创建
  • 我们在程序中经常用到 全国省市县三级联动 选择地址,那样的话 保存到数据库中是一个字段还是三个字段

谁有全国银行的联行号数据库,更好是省市区版的

有个网站可以,你百度试试,我就是在百度上找的,仔细点就能找到。

省市区 地址联动 数据怎么创建

1、在做这个小项目前的准备工作:

1.1、分析:

由于省、市、县城(区)这些数据是存储到了MySQL数据库中的,我们要通过后台servlet获取数据库中的数据,然后再通过转发或者重定向的方式将数据呈现到前台页面中。

1.2、需要导入的jar包有:

mysql驱动包:mysql-connector-Java-5.1.7-bin.jar

c3p0数据库连接池:c3p0-0.9.2.1.jar、mysql-connector-java-5.1.7-bin.jar(c3p0依赖包)

前台c标签(需要通过遍历的方式呈现——c:forEach):jstl-1.0.2.jar、standard-1.0.1.jar(jstl依赖包)

将或者数组转换成json数据格式(Jackson包):jackson-annotations-2.2.1.jar、jackson-core-2.2.1.jar、jackson-databind-2.2.1.jar

前台页面需要用到jQuery,故还需要导入jquery-1.7.2.js库文件

1.3、该小项目用到的技术:

jdbc的知识、servlet的知识、jquery的知识、Ajax的知识(局部刷新)、标签的知识、EL表达式的知识、P的知识

2、开发过程:

2.1、准备数据源

创建一个数据库,命名为thereaction并创建三个表——province(省)、city(市)、county(县/区)

2.2后台开发

创建三个Javabean分别是Province、City、County。(由于太过简单,这里就不粘代码了)

创建Java类和c3p0连接池实现与数据库的连接:DAO.java(实现获取数据库数据的功能)、jdbctools.java(实现获取数据库连接、释放连接的功能)、c3p0-config.xml

jdbctools.java代码如下:

view plain copy

package com.xiaojie.dao;

import java.io.IOException;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class Jdbctools {

private static DataSource ds=null;

//数据库连接池应只被初始化一次

static{

ds=new ComboPooledDataSource(“helloc3p0”);

}

//获取数据库连接

public static Connection getConnection() throws ClassNotFoundException, SQLException, IOException{

return ds.getConnection();

}

public static void shifanglianjie(Connection ct, PreparedStatement ps,ResultSet rs) {

if(rs!=null){

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(ps!=null){

try {

ps.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

if(ct!=null){

try {

ct.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

DAO.java的代码如下

view plain copy

package com.xiaojie.dao;

import java.io.IOException;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.xiaojie.beans.City;

import com.xiaojie.beans.County;

import com.xiaojie.beans.Province;

public class DAO {

public List getprovince(String sql ,Object…args) throws ClassNotFoundException, SQLException, IOException{

List provinces=new ArrayList();

//准备去查数据库

Connection ct=null;

ct=Jdbctools.getConnection();

System.out.println(“获取到数据库的连接了”);

PreparedStatement ps=null;

ResultSet rs=null;

ps=ct.prepareStatement(sql);

for(int i=0;i getcity(String sql ,Object…args) throws SQLException, ClassNotFoundException, IOException{

List cities=new ArrayList();

//准备去查数据库

Jdbctools jt=new Jdbctools();

Connection ct=null;

ct=jt.getConnection();

PreparedStatement ps=null;

ResultSet rs=null;

ps=ct.prepareStatement(sql);

for(int i=0;i getcounty(String sql,Object…args ) throws SQLException, ClassNotFoundException, IOException{

List counties=new ArrayList();

//准备去查数据库

Jdbctools jt=new Jdbctools();

Connection ct=null;

ct=jt.getConnection();

PreparedStatement ps=null;

ResultSet rs=null;

ps=ct.prepareStatement(sql);

for(int i=0;i

root

com.mysql.jdbc.Driver

jdbc:

创建servlet.java 文件

view plain copy

package com.xiaojie.servlet;

import java.io.IOException;

import java.lang.reflect.Method;

import java.sql.SQLException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.xiaojie.beans.City;

import com.xiaojie.beans.County;

import com.xiaojie.beans.Province;

import com.xiaojie.dao.DAO;

/**

* Servlet implementation class ThreeactiondServlet

*/

@WebServlet(“/threeactiondServlet”)

public class ThreeactiondServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String methodname=request.getParameter(“method”);

try {

Method method=getClass().getDeclaredMethod(methodname,HttpServletRequest.class,HttpServletResponse.class);

method.invoke(this, request,response);//调用各自的方法

} catch (Exception e) {

e.printStackTrace();

}

}

private DAO dao=new DAO();

protected void province(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {

System.out.println(“province的servlet进入了”);

String sql=”select province_id,province_name from province”;

List provinces=dao.getprovince(sql);

request.setAttribute(“provinces”, provinces);

System.out.println(provinces);

//注意:这里不能用重定向的形式,因为我们好不容易在request请求域中存储了省的信息,目的是在前台页面中能够从请求域中获取到我们存在数据库中的值

//故这里只能用转发的方式

request.getRequestDispatcher(“/index2.jsp”).forward(request, response);

}

protected void city(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {

System.out.println(“city的servlet进入了”);

String province_id=request.getParameter(“province_id”);

String sql=”select city_id,city_name from city where province_id=?”;

List cities=dao.getcity(sql,Integer.parseInt(province_id));

ObjectMapper mapper=new ObjectMapper();

String result=mapper.writeValueAsString(cities);

System.out.println(result);

response.setContentType(“text/javascript”);

response.getWriter().print(result);

}

protected void county(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {

System.out.println(“county的servlet进入了”);

String city_id=request.getParameter(“city_id”);

String sql=”select county_id,county_name from county where city_id=?”;

List counties=dao.getcounty(sql,Integer.parseInt(city_id));

ObjectMapper mapper=new ObjectMapper();

String result=mapper.writeValueAsString(counties);

System.out.println(result);

response.setContentType(“text/javascript”);

response.getWriter().print(result);

}

我们在程序中经常用到 全国省市县三级联动 选择地址,那样的话 保存到数据库中是一个字段还是三个字段

说白了 就是一友源个树 每个地区名都有一个 父地区节点

1 中国 0

2 河北 1

3 河南 1

4 沧州 2

不过我不建议这么做 这些数据都是死的 你可以写在一个js里 然后衡兄用数组的形式调出来 减少数据库好拦态查询

三个字段的,省、市、县

看你要不要做统计汇总陪薯之类的..

如果只是填个资料,1个字段就行了,省市县用#,$,&这些特殊符号隔开..

如果后期要做归纳,搜索这样的功能谨唯,那还是祥乱培分3个字段

省市区数据库查询的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于省市区数据库查询,查询省市区信息的数据库技巧,谁有全国银行的联行号数据库,更好是省市区版的,省市区 地址联动 数据怎么创建,我们在程序中经常用到 全国省市县三级联动 选择地址,那样的话 保存到数据库中是一个字段还是三个字段的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/249185.html<

(0)
管理的头像管理
上一篇2025-04-27 22:35
下一篇 2025-04-27 22:37

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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