最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

天氣網(wǎng)城市代碼(MYSQL)獲取實現(xiàn)

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-09 15:42:05
文檔

天氣網(wǎng)城市代碼(MYSQL)獲取實現(xiàn)

天氣網(wǎng)城市代碼(MYSQL)獲取實現(xiàn):MYSQL數(shù)據(jù)庫存儲城市代碼實現(xiàn) 在這篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,說的是城市代碼的MYSQL數(shù)據(jù)庫方式的存儲實現(xiàn),這篇具體講述實現(xiàn)方法。 實現(xiàn)類CityDB.java /** * @2013-12-18 * @auth
推薦度:
導(dǎo)讀天氣網(wǎng)城市代碼(MYSQL)獲取實現(xiàn):MYSQL數(shù)據(jù)庫存儲城市代碼實現(xiàn) 在這篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,說的是城市代碼的MYSQL數(shù)據(jù)庫方式的存儲實現(xiàn),這篇具體講述實現(xiàn)方法。 實現(xiàn)類CityDB.java /** * @2013-12-18 * @auth

MYSQL數(shù)據(jù)庫存儲城市代碼實現(xiàn) 在這篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,說的是城市代碼的MYSQL數(shù)據(jù)庫方式的存儲實現(xiàn),這篇具體講述實現(xiàn)方法。 實現(xiàn)類CityDB.java /** * @2013-12-18 * @author eabour * @file CityDB.java * Al

MYSQL數(shù)據(jù)庫存儲城市代碼實現(xiàn)

在這篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,說的是城市代碼的MYSQL數(shù)據(jù)庫方式的存儲實現(xiàn),這篇具體講述實現(xiàn)方法。

實現(xiàn)類CityDB.java

/**
 * @2013-12-18
 * @author eabour
 * @file CityDB.java
 * All Rights Reserved!
 */
package com.eabour.weather;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.eabour.jdbc.ConnectionPool;
import com.eabour.tool.LogUtil;

/**
 * @author eabour
 * @create 2013-12-18 下午2:44:59
 */
public class CityDB {

	private ConnectionPool pool;
	private final String PROV_TABLE="province";
	private final String CITY_TABLE="city";
	private final String DIST_TABLE="distract";

	public CityDB(){
	this.pool=ConnectionPool.getInstance();
	}

	/**
	 * 
	 * @author eabour
	 * @throws SQLException 
	 * @create 2013-12-18 下午2:50:15
	 *
	 * @function: 
	 */
	public void getCitCode() throws SQLException{
	Connection con=pool.getConnection();
	try{
	Statement stmt=con.createStatement();
	/*
	 * DROP TABLE IF EXISTS `province`;
	 * DROP TABLE IF EXISTS `city`;
	 * DROP TABLE IF EXISTS `distract`;
	 * 
	 */
	/*
	ResultSet tables=stmt.executeQuery("show tables");
	boolean hasProv = false,hasCity = false,hasDist = false;
	while(tables.next()){
	String table=tables.getString(1);
	if(PROV_TABLE.equals(table)) hasProv=true;
	if(CITY_TABLE.equals(table)) hasCity=true;
	if(DIST_TABLE.equals(table)) hasDist=true;
	}
	*/
	con.setAutoCommit(false);
	
	stmt.addBatch("DROP TABLE IF EXISTS " + DIST_TABLE);
	stmt.addBatch("DROP TABLE IF EXISTS " + CITY_TABLE);
	stmt.addBatch("DROP TABLE IF EXISTS " + PROV_TABLE);

	stmt.executeBatch();
	
	//con.setAutoCommit(true);
	stmt.addBatch("CREATE TABLE " + PROV_TABLE + " " +
	"(id varchar(10),name varchar(20),primary key(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8");
	stmt.addBatch("CREATE TABLE " + CITY_TABLE + " " +
	"(id varchar(10),name varchar(20),pro_id varchar(10),primary key(id)," +
	"foreign key(pro_id) references " + PROV_TABLE + "(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8");
	stmt.addBatch("CREATE TABLE " + DIST_TABLE + " " +
	"(id varchar(10),name varchar(20),code varchar(15),city_id varchar(10)," +
	"primary key(id),foreign key(city_id) references " + CITY_TABLE + "(id)) ENGINE=InnoDB DEFAULT CHARSET=utf8");

	stmt.executeBatch();
	con.commit();
	
	CityCode cityutil=new CityCode();
	//get Province list
	Map pro=cityutil.getProvinceList();
	for(String key : pro.keySet()){
	System.out.println(key + " : " + pro.get(key));
	stmt.addBatch("INSERT INTO "+ PROV_TABLE + "(id,name) values(\'"+ key + "\',\'" + pro.get(key) + "\')");
	}
	stmt.executeBatch();
	con.commit();
	for(String key : pro.keySet()){
	System.out.println(pro.get(key));
	//get city list
	Map city=cityutil.getCityZone(key);
	for(String city_key : city.keySet()){
	System.out.println(" " + city.get(city_key));
	stmt.addBatch("INSERT INTO "+ CITY_TABLE + " values(\'"+ city_key + "\',\'" + city.get(city_key) + "\',\'" + key + "\')");
	//get distract list
	Map distract=cityutil.getCityZone(city_key);
	for(String dis_key : distract.keySet()){
	System.out.println(" " + distract.get(dis_key));
	//get concrete information
	Map concrete=cityutil.getCityZone(dis_key);
	stmt.addBatch("INSERT INTO "+ DIST_TABLE + " values(\'"+ dis_key + "\',\'" + distract.get(dis_key) + "\',\'" + concrete.get(dis_key) + "\',\'" + city_key + "\')");
	}
	}
	stmt.executeBatch();
	con.commit();
	}
	}finally{
	con.setAutoCommit(true);
	pool.release(con);
	}
	}
	
	/**
	 * @param city
	 * @return
	 * @author eabour
	 * @create 2013-12-18 下午5:31:16
	 * @charset UTF-8
	 * 
	 * @function: 根據(jù)參數(shù)city來查詢該城市的代碼
	 */
	public String getCode(String city){
	Connection con=pool.getConnection();
	try{
	if(city == null || !city.matches("[\\u4E00-\\u9FA5]+")) return "不合法";
	con.setAutoCommit(true);
	
	PreparedStatement ps=con.prepareStatement("select code from "+DIST_TABLE+" where name = ?");
	ps.setString(1, city);
	ResultSet rs=ps.executeQuery();
	if(rs.next()){
	return rs.getString(1);
	}
	
	ps=con.prepareStatement("select id from "+ PROV_TABLE +" where name = ?");
	ps.setString(1, city);
	ResultSet rs1=ps.executeQuery();
	List list=new ArrayList();
	if(rs1.next()){
	String id=rs1.getString(1);
	ps=con.prepareStatement("select name from "+ CITY_TABLE +" where pro_id = ?");
	ps.setString(1, id);
	ResultSet rs2=ps.executeQuery();
	while(rs2.next()){
	list.add(rs2.getString(1));
	}
	return list.toString();
	}
	
	} catch (SQLException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
	LogUtil.logWarn(this.getClass(), "getCity", e.toString());
	}finally{
	pool.release(con);
	}
	return "Unable to search the city's name of " + city;
	}
}


這就是主要實現(xiàn)類。

測試類:

public static void main(String[] args) throws SQLException {
	// TODO Auto-generated method stub
	ConnectionPool pool=ConnectionPool.getInstance();
	pool.localInit();
	System.out.println(new CityDB().getCode("西安")); }

這個是測試的主方法,ConnectionPool是個數(shù)據(jù)庫連接池,pool.localinit()是對數(shù)據(jù)庫的本地初始化,重要作用是初始化本地數(shù)據(jù)庫的連接等,并建立池,好讓用到數(shù)據(jù)庫連接的語句使用,也可以自己創(chuàng)建Connection連接,都可以。


今天在編寫該類時,遇見了一些異常,主要還是對Mysql數(shù)據(jù)庫的不了解造成的,就是出現(xiàn)了在插入漢字的時候,出現(xiàn)異常為 ‘海南’ not in feild list ,當(dāng)時不知道原因,以為是字段問題,但是改完字段名稱后還是這樣的。左后就直接在數(shù)據(jù)庫中操作,而不是在java程序里,結(jié)果還是同樣的錯誤。然后我就重新用navicat for mysql進行建表,相同的字段,結(jié)果還是不能存漢字,但是原先的一個表能存漢字,現(xiàn)在的錯誤為 “incorrect string value”,進過查閱資料得知,是Mysql字符編碼的問題,要修改為utf8,最后在新建表時添加如下語句:ENGINE=InnoDB DEFAULT CHARSET=utf8 。

還有就是mysql中的 `(是在TAB鍵上面和1鍵前面的那個有波浪的鍵),就是加在表名和字段上面的,字符串的是'(單引號,不是 ` )。鑒于對MYSQL的研究不多,就不在講述。

如有不當(dāng)之處,還請指正!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

天氣網(wǎng)城市代碼(MYSQL)獲取實現(xiàn)

天氣網(wǎng)城市代碼(MYSQL)獲取實現(xiàn):MYSQL數(shù)據(jù)庫存儲城市代碼實現(xiàn) 在這篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,說的是城市代碼的MYSQL數(shù)據(jù)庫方式的存儲實現(xiàn),這篇具體講述實現(xiàn)方法。 實現(xiàn)類CityDB.java /** * @2013-12-18 * @auth
推薦度:
標(biāo)簽: 獲取 天氣 實現(xiàn)
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top