Inhaltsverzeichnis
MYSQL数据库存储城市代码实现
Heim Datenbank MySQL-Tutorial 天气网城市代码(MYSQL)获取实现

天气网城市代码(MYSQL)获取实现

Jun 07, 2016 pm 03:24 PM
mysql 代码 城市 天气 实现 获取

MYSQL数据库存储城市代码实现 在这篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,说的是城市代码的MYSQL数据库方式的存储实现,这篇具体讲述实现方法。 实现类CityDB.java /** * @2013-12-18 * @author eabour * @file CityDB.java * Al

MYSQL数据库存储城市代码实现

在这篇http://blog.csdn.net/huoer_12/article/details/17399211文章中,说的是城市代码的MYSQL数据库方式的存储实现,这篇具体讲述实现方法。

 

实现类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<string> 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<string> 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<string> distract=cityutil.getCityZone(city_key);
					for(String dis_key : distract.keySet()){
						System.out.println("      " + distract.get(dis_key));
						//get concrete information
						Map<string> 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: 根据参数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<string> list=new ArrayList<string>();
			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;
	}
}
</string></string></string></string></string></string>
Nach dem Login kopieren


这就是主要实现类。

测试类:

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("西安")); }
Nach dem Login kopieren

这个是测试的主方法,ConnectionPool是个数据库连接池,pool.localinit()是对数据库的本地初始化,重要作用是初始化本地数据库的连接等,并建立池,好让用到数据库连接的语句使用,也可以自己创建Connection连接,都可以。


今天在编写该类时,遇见了一些异常,主要还是对Mysql数据库的不了解造成的,就是出现了在插入汉字的时候,出现异常为 ‘海南’ not in feild list ,当时不知道原因,以为是字段问题,但是改完字段名称后还是这样的。左后就直接在数据库中操作,而不是在java程序里,结果还是同样的错误。然后我就重新用navicat for mysql进行建表,相同的字段,结果还是不能存汉字,但是原先的一个表能存汉字,现在的错误为 “incorrect string value”,进过查阅资料得知,是Mysql字符编码的问题,要修改为utf8,最后在新建表时添加如下语句:ENGINE=InnoDB DEFAULT CHARSET=utf8

还有就是mysql中的  `(是在TAB键上面和1键前面的那个有波浪的键),就是加在表名和字段上面的,字符串的是'(单引号,不是 ` )。鉴于对MYSQL的研究不多,就不在讲述。

 

如有不当之处,还请指正!

 

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

Überwachen Sie Redis Tröpfchen mit Redis Exporteur Service Überwachen Sie Redis Tröpfchen mit Redis Exporteur Service Apr 10, 2025 pm 01:36 PM

Eine effektive Überwachung von Redis -Datenbanken ist entscheidend für die Aufrechterhaltung einer optimalen Leistung, die Identifizierung potenzieller Engpässe und die Gewährleistung der Zuverlässigkeit des Gesamtsystems. Redis Exporteur Service ist ein leistungsstarkes Dienstprogramm zur Überwachung von Redis -Datenbanken mithilfe von Prometheus. In diesem Tutorial führt Sie die vollständige Setup und Konfiguration des Redis -Exporteur -Dienstes, um sicherzustellen, dass Sie nahtlos Überwachungslösungen erstellen. Durch das Studium dieses Tutorials erhalten Sie voll funktionsfähige Überwachungseinstellungen

So sehen Sie sich den SQL -Datenbankfehler an So sehen Sie sich den SQL -Datenbankfehler an Apr 10, 2025 pm 12:09 PM

Die Methoden zum Anzeigen von SQL -Datenbankfehlern sind: 1. Fehlermeldungen direkt anzeigen; 2. Verwenden Sie Showfehler und Warnungsbefehle anzeigen; 3.. Greifen Sie auf das Fehlerprotokoll zu. 4. Verwenden Sie Fehlercodes, um die Ursache des Fehlers zu finden. 5. Überprüfen Sie die Datenbankverbindung und die Abfrage -Syntax. 6. Verwenden Sie Debugging -Tools.

See all articles