目次
MYSQL数据库存储城市代码实现
ホームページ データベース mysql チュートリアル 天气网城市代码(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>
ログイン後にコピー


这就是主要实现类。

测试类:

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是个数据库连接池,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的研究不多,就不在讲述。

 

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

 

 

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Laravelは紹介例 Laravelは紹介例 Apr 18, 2025 pm 12:45 PM

Laravelは、Webアプリケーションを簡単に構築するためのPHPフレームワークです。次のような強力な機能を提供します。インストール:Laravel CLIを作曲家にグローバルにインストールし、プロジェクトディレクトリにアプリケーションを作成します。ルーティング:ルート/web.phpのURLとハンドラーの関係を定義します。ビュー:リソース/ビューでビューを作成して、アプリケーションのインターフェイスをレンダリングします。データベース統合:MySQLなどのデータベースとのすぐ外側の統合を提供し、移行を使用してテーブルを作成および変更します。モデルとコントローラー:モデルはデータベースエンティティを表し、コントローラーはHTTP要求を処理します。

MySQLおよびPHPMYADMIN:コア機能と関数 MySQLおよびPHPMYADMIN:コア機能と関数 Apr 22, 2025 am 12:12 AM

MySQLとPHPMyAdminは、強力なデータベース管理ツールです。 1)MySQLは、データベースとテーブルを作成し、DMLおよびSQLクエリを実行するために使用されます。 2)PHPMyAdminは、データベース管理、テーブル構造管理、データ操作、ユーザー許可管理のための直感的なインターフェイスを提供します。

MySQL対その他のプログラミング言語:比較 MySQL対その他のプログラミング言語:比較 Apr 19, 2025 am 12:22 AM

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース データベース接続の解決問題:Minii/DBライブラリを使用する実用的なケース Apr 18, 2025 am 07:09 AM

小さなアプリケーションを開発する際には、軽量データベース操作ライブラリをすばやく統合する必要性という厄介な問題に遭遇しました。複数のライブラリを試した後、私はそれらがあまりにも多くの機能を持っているか、あまり互換性がないかのどちらかであることがわかりました。最終的に、私は問題を完全に解決したYii2に基づいた単純化されたバージョンであるMinii/DBを見つけました。

Laravel Frameworkインストール方法 Laravel Frameworkインストール方法 Apr 18, 2025 pm 12:54 PM

記事の概要:この記事では、Laravelフレームワークを簡単にインストールする方法について読者をガイドするための詳細なステップバイステップの指示を提供します。 Laravelは、Webアプリケーションの開発プロセスを高速化する強力なPHPフレームワークです。このチュートリアルは、システム要件からデータベースの構成とルーティングの設定までのインストールプロセスをカバーしています。これらの手順に従うことにより、読者はLaravelプロジェクトのための強固な基盤を迅速かつ効率的に築くことができます。

MySQL:構造化データとリレーショナルデータベース MySQL:構造化データとリレーショナルデータベース Apr 18, 2025 am 12:22 AM

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLモードの問題を解決する問題:TheliamySQLModescheckerモジュールの使用経験 MySQLモードの問題を解決する問題:TheliamySQLModescheckerモジュールの使用経験 Apr 18, 2025 am 08:42 AM

Theliaを使用してeコマースWebサイトを開発するとき、私はトリッキーな問題に遭遇しました:MySQLモードが適切に設定されていないため、いくつかの機能が適切に機能しません。いくつかの調査の後、TheliamysQlModescheckerというモジュールを見つけました。これは、Theliaが必要とするMySQLパターンを自動的に修正できるため、問題を完全に解決できます。

MySQL:説明されている主要な機能と機能 MySQL:説明されている主要な機能と機能 Apr 18, 2025 am 12:17 AM

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

See all articles