當前位置:首頁 » 操作系統 » 省市區聯動資料庫

省市區聯動資料庫

發布時間: 2024-09-27 02:06:41

Ⅰ 如何在openerp中創建二級聯動

是指省市區這類型的聯動吧。這種聯動一般是通過表與表之間關聯加上domain控制的
我就說一下省市區實現吧
class province 欄位id name
class city 欄位id name province_id
class district 欄位 id name city_id
class 業務類欄位如下:
province_id = fields.Many2one('province', string=u"省")
city_id = fields.Many2one('city', string=u"市", domain="[('province_id', '=', province_id )]")
district_id = fields.Many2one('district', string=u"區", domain="[('city_id', '=', city_id)]")
這只是方法之一,應該能滿足你需求了。

Ⅱ 省市區 地址聯動 數據怎麼創建

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表達式的知識、JSP的知識
2、開發過程:
2.1、准備數據源
創建一個資料庫,命名為thereaction並創建三個表——province(省)、city(市)、county(縣/區)
2.2後台開發
創建三個Javabean分別是Province、City、County。(由於太過簡單,這里就不粘代碼了)
創建Java類和c3p0連接池實現與資料庫的連接:DAO.java(實現獲取資料庫數據的功能)、jdbctools.java(實現獲取資料庫連接、釋放連接的功能)、c3p0-config.xml
jdbctools.java代碼如下:
[java] view plain
package com.xiaojie.;

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的代碼如下
[java] view plain
package com.xiaojie.;

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<Province> getprovince(String sql ,Object...args) throws ClassNotFoundException, SQLException, IOException{
List<Province> provinces=new ArrayList<Province>();
//准備去查資料庫
Connection ct=null;
ct=Jdbctools.getConnection();
System.out.println("獲取到資料庫的連接了");
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
provinces.add(new Province(rs.getInt("province_id"),rs.getString("province_name")));
}
Jdbctools.shifanglianjie(ct, ps, rs);
return provinces;

}
public List<City> getcity(String sql ,Object...args) throws SQLException, ClassNotFoundException, IOException{
List<City> cities=new ArrayList<City>();
//准備去查資料庫
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<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
cities.add(new City(rs.getInt("city_id"),rs.getString("city_name")));
}
jt.shifanglianjie(ct, ps, rs);
return cities;

}
public List<County> getcounty(String sql,Object...args ) throws SQLException, ClassNotFoundException, IOException{
List<County> counties=new ArrayList<County>();
//准備去查資料庫
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<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
counties.add(new County(rs.getInt("county_id"),rs.getString("county_name")));
}
jt.shifanglianjie(ct, ps, rs);
return counties;

}
}
c3p0-config.xml的代碼如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="helloc3p0">
<!-- 連接數據源的基本屬性 -->
<property name="user">root</property>
<property name="password"></property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///thereaction</property>

<!-- 若資料庫中連接數不足時,一次向資料庫伺服器申請多少個連接 -->
<property name="acquireIncrement">5</property>
<!-- 初始化資料庫連接池時連接的數量 -->
<property name="initialPoolSize">5</property>
<!-- 資料庫連接池中的最小的資料庫連接數 -->
<property name="minPoolSize">5</property>
<!-- 資料庫連接池中的最大的資料庫連接數 -->
<property name="maxPoolSize">10</property>
<!-- c3p0資料庫連接可以維護的statement的個數 -->
<property name="maxStatements">20</property>
<!-- 每個連接同時可以使用的statement對象的個數 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>

創建servlet.java 文件
[java] view plain
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;
/**
* 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 =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<Province> provinces=.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<City> cities=.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<County> counties=.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);
}
}

Ⅲ 如何用Java輸入一個省份,然後列出這個省份所有城市的名字

簡單寫了一下,一般來說,在項目里省市區是保存在資料庫或者前端頁面的js中的,到時候直接查詢或者js中用json讀取。

一般情況下是省市區三級聯動。

現在寫的這個是純java,用的時候需要做一個省類的數組或者List,然後自行添加省市區的數據。


//省類
publicclassSheng{
privateStringname;
privateArrayList<Shi>shi=newList<Shi>();

publicSheng(Stringname){
setName(name);
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicvoidaddShi(Shishi){
this.shi.add(shi);
}

//TODO

publicvoidprintShiList(){
for(Shis:shi){
System.out.println(s.name);
}
}

}


//市類
publicclassSheng{
privatename;
privateStringxian[]=newString[];


//TODO



publicStringgetName(){
returnname;
}
}

Ⅳ 請問用什麼方式可以實現省市級聯的效果呀 省市的數據是從資料庫中查出來的

使用jquery的ajax方式從伺服器載入json數據至客戶端即可以實現省市級聯的效果。
具體如下:
1)、頁面初始化時,首先載入所有的省;
2)、選擇省,ajax傳送編碼至伺服器,伺服器根據選中的省編碼,返回省下所有的市。
這樣就能動態實現了省市級聯的效果了。

熱點內容
graham凸包演算法 發布:2024-09-27 07:11:59 瀏覽:93
寫小說的怎麼上傳 發布:2024-09-27 07:10:30 瀏覽:4
國內的伺服器可以搭建v2嗎 發布:2024-09-27 07:09:34 瀏覽:994
指定資料庫所在伺服器ip怎麼找 發布:2024-09-27 06:33:54 瀏覽:326
linux安裝google 發布:2024-09-27 06:33:46 瀏覽:107
euclid演算法 發布:2024-09-27 06:20:22 瀏覽:642
java銀行賬戶類 發布:2024-09-27 06:20:12 瀏覽:908
linux內核編譯重新 發布:2024-09-27 06:18:45 瀏覽:461
解壓拓展項目 發布:2024-09-27 05:43:16 瀏覽:191
編譯原理上升的箭頭 發布:2024-09-27 05:25:24 瀏覽:223