随着互联网的发展,省市区信息查询已经成为了日常生活中不可或缺的事情。同时,随着对于城市规划的越来越重视,对于省市区信息的需求也越来越高。在这种情况下,我们需要能够高效地。
一、数据库的设计
我们需要了解数据库的设计。数据库的设计包括三层结构,分别为外模型、逻辑模型和物理模型。外模型是针对用户的,也就是用户能够看到和使用的模型;逻辑模型是对于数据库内部结构的抽象,是一种中间层;物理模型则是和具体的数据库管理软件有关系的,是一种具体实现。
在设计数据库时,我们需要考虑以下几点:
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语法进行提高效率。希望本文对您有所帮助。
成都网站建设公司-创新互联,建站经验丰富以策略为先导10多年以来专注数字化网站建设,提供企业网站建设,高端网站设计,响应式网站制作,设计师量身打造品牌风格,热线:028-86922220有个网站可以,你百度试试,我就是在百度上找的,仔细点就能找到。
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个字段
省市区数据库查询的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于省市区数据库查询,查询省市区信息的数据库技巧,谁有全国银行的联行号数据库,更好是省市区版的,省市区 地址联动 数据怎么创建,我们在程序中经常用到 全国省市县三级联动 选择地址,那样的话 保存到数据库中是一个字段还是三个字段的信息别忘了在本站进行查找喔。
创新互联【028-86922220】值得信赖的成都网站建设公司。多年持续为众多企业提供成都网站建设,成都品牌建站设计,成都高端网站制作开发,SEO优化排名推广服务,全网营销让企业网站产生价值。
网站栏目:查询省市区信息的数据库技巧(省市区数据库查询)
文章位置:http://www.shufengxianlan.com/qtweb/news26/442076.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联