日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql查询市区县_通过数据库获取省份城市区县的名字

發(fā)布時間:2023/12/20 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql查询市区县_通过数据库获取省份城市区县的名字 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本篇博客的主要目的,是介紹怎樣將數(shù)據(jù)庫文件保存到手機系統(tǒng)文件,并且可以顯示各個省市地的名字。

數(shù)據(jù)庫一共有三個表,他們分別是(后面我將上傳整個文件和數(shù)據(jù)庫文件)

省表

CREATE TABLE IF NOT EXISTS `fs_province` (

`ProvinceID` bigint(20) NOT NULL,

`ProvinceName` varchar(50) DEFAULT NULL,

`DateCreated` datetime DEFAULT NULL,

`DateUpdated` datetime DEFAULT NULL,

PRIMARY KEY (`ProvinceID`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

城市表

CREATE TABLE IF NOT EXISTS `fs_city` (

`CityID` bigint(20) NOT NULL,

`CityName` varchar(50) DEFAULT NULL,

`ZipCode` varchar(50) DEFAULT NULL,

`ProvinceID` bigint(20) DEFAULT NULL,

`DateCreated` datetime DEFAULT NULL,

`DateUpdated` datetime DEFAULT NULL,

PRIMARY KEY (`CityID`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

縣區(qū)表

CREATE TABLE IF NOT EXISTS `fs_district` (

`DistrictID` bigint(20) NOT NULL,

`DistrictName` varchar(50) DEFAULT NULL,

`CityID` bigint(20) DEFAULT NULL,

`DateCreated` datetime DEFAULT NULL,

`DateUpdated` datetime DEFAULT NULL,

PRIMARY KEY (`DistrictID`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

注意:

省份表和城市表中,都有北京,上海,重慶,天津這四個城市,所以要自己判斷一下。

先看下效果圖:

我們將二進制的數(shù)據(jù)庫文件放入工程的res/raw下面,如圖所示:

整個程序的主要功能,我都封裝在了CityInfoDataSupport2這個類中。

package com.example.province;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteException;

import android.database.sqlite.SQLiteOpenHelper;

import android.os.Environment;

public class CityInfoDataSupport2 {

private static CityInfoDataSupport2 cityInfoDataSupport;

public static final String PACKAGE_NAME = "com.example.province";

/**

* 數(shù)據(jù)庫在手機系統(tǒng)內(nèi)存里的路徑

*/

private static String DATABASE_PATH = "/data"

+ Environment.getDataDirectory() + "/"+PACKAGE_NAME + "/databases/";

/**

* 數(shù)據(jù)庫的名稱

*/

public static final String dbName = "mzk_db";

private SQLiteDatabase mSDB;

public static CityInfoDataSupport2 getInstance(Context context) {

initDataBase(context);

if (cityInfoDataSupport == null) {

cityInfoDataSupport = new CityInfoDataSupport2();

}

return cityInfoDataSupport;

}

/**

* 初試化數(shù)據(jù)庫

*/

private static void initDataBase(Context context) {

boolean dbExist = checkDataBase();

if (dbExist) {

} else {

// 如果不存在,則將raw里的數(shù)據(jù)存入手機sd卡

copyDataBase(context);

}

}

/**

* 復制數(shù)據(jù)庫到手機指定文件夾下

*

* @throws IOException

*/

private static void copyDataBase(Context context) {

String databaseFilenames = DATABASE_PATH + dbName;

File dir = new File(DATABASE_PATH);

FileOutputStream os = null;

InputStream is = null;

// 判斷文件夾是否存在,不存在就創(chuàng)建一個

if (!dir.exists()) {

dir.mkdirs();

}

try {

// 得到數(shù)據(jù)庫的輸出流

os = new FileOutputStream(databaseFilenames);

// 得到數(shù)據(jù)文件的輸入流

is = context.getResources().openRawResource(R.raw.mzk_db);

byte[] buffer = new byte[8192];

int count = 0;

while ((count = is.read(buffer)) != -1) {

os.write(buffer, 0, count);

os.flush();

}

// 之所以不在這里初始化,是因為這邊是靜態(tài)的方法,而mSDB并沒有設置為靜態(tài)的,也不推薦設為靜態(tài)的

// mSDB = SQLiteDatabase.openOrCreateDatabase(DATABASE_PATH +

// dbName, null);

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

os.close();

is.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

* 判斷數(shù)據(jù)庫是否存在

*

* @return

*/

private static boolean checkDataBase() {

SQLiteDatabase checkDB = null;

String databaseFilename = DATABASE_PATH + dbName;

// 要自己加上try catch方法

try {

// 返回最新的數(shù)據(jù)庫

checkDB = SQLiteDatabase.openDatabase(databaseFilename, null,

SQLiteDatabase.OPEN_READONLY);

} catch (SQLiteException e) {

// TODO: handle exception

}

if (checkDB != null) {

checkDB.close();

}

// 如果checkDB為null,則沒有數(shù)據(jù)庫,返回false

return checkDB == null ? false : true;

}

/**

* 查詢所有省份的信息

*

* @return 省份信息

*/

public ArrayList queryProvince() {

// 創(chuàng)建數(shù)據(jù)庫

mSDB = SQLiteDatabase

.openOrCreateDatabase(DATABASE_PATH + dbName, null);

ArrayList list = new ArrayList();

String sql = "select * from fs_province";

Cursor cursor = mSDB.rawQuery(sql, null);

while (cursor.moveToNext()) {

City city = new City();

String id = cursor.getString(cursor.getColumnIndex("ProvinceID"));

String name = cursor.getString(cursor

.getColumnIndex("ProvinceName"));

city.setName(name);

city.setId(id);

list.add(city);

}

if (cursor != null) {

cursor.close();

}

return list;

}

/**

* 通過省份來查找城市

*

* @param provinceId

* 省份的id

* @return 該省的所有城市

*/

public ArrayList queryCityByProvince(String provinceId) {

// 創(chuàng)建數(shù)據(jù)庫

mSDB = SQLiteDatabase

.openOrCreateDatabase(DATABASE_PATH + dbName, null);

ArrayList list = new ArrayList();

String sql = "select * from fs_city where ProvinceID=" + provinceId;

Cursor cursor = mSDB.rawQuery(sql, null);

while (cursor.moveToNext()) {

City city = new City();

String id = cursor.getString(cursor.getColumnIndex("CityID"));

String name = cursor.getString(cursor.getColumnIndex("CityName"));

city.setName(name);

city.setId(id);

list.add(city);

}

if (cursor != null) {

cursor.close();

}

return list;

}

/**

* 通過城市來查找縣區(qū)

*

* @param provinceId

* 省份的id

* @return 該省的所有城市

*/

public ArrayList queryDistrictByCity(String cityId) {

// 創(chuàng)建數(shù)據(jù)庫

mSDB = SQLiteDatabase

.openOrCreateDatabase(DATABASE_PATH + dbName, null);

ArrayList list = new ArrayList();

String sql = "select * from fs_district where CityID=" + cityId;

Cursor cursor = mSDB.rawQuery(sql, null);

while (cursor.moveToNext()) {

City city = new City();

String id = cursor.getString(cursor.getColumnIndex("DistrictID"));

String name = cursor.getString(cursor

.getColumnIndex("DistrictName"));

city.setName(name);

city.setId(id);

list.add(city);

}

if (cursor != null) {

cursor.close();

}

return list;

}

public void closeDataBase() {

if (mSDB != null) {

mSDB.close();

}

}

}

這個類中,將程序中的數(shù)據(jù)庫二進制文件復制到了手機系統(tǒng)內(nèi)存中。代碼中都有很詳細的注釋,我在這里就不多說了。

接下來就是各個Activity的內(nèi)容了,都很簡單,我就貼一個吧,之后我將上傳整個程序。

package com.example.province;

import java.util.ArrayList;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

/**

* 省份的名字,其中北京,上海,天津,重慶,香港,澳門這六個是特殊的例子

* @author lgx

*

*/

public class MainActivity extends Activity {

ArrayList province;

ListView province_list;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

province_list = (ListView) findViewById(R.id.province_list);

province = CityInfoDataSupport2.getInstance(this).queryProvince();

TestAdapter adapter = new TestAdapter(this, province);

province_list.setAdapter(adapter);

province_list.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

String ProviceId = province.get(position).getId();

String proviceName = province.get(position).getName();

if (proviceName.equals("北京") || proviceName.equals("天津")

|| proviceName.equals("上海") || proviceName.equals("重慶")) {

Intent intent = new Intent(MainActivity.this,

DistrictActivity.class);

intent.putExtra("pcode", ProviceId);

startActivity(intent);

} else {

Intent intent = new Intent(MainActivity.this,

CityActivity.class);

intent.putExtra("pcode", ProviceId);

startActivity(intent);

}

}

});

}

@Override

protected void onDestroy() {

super.onDestroy();

// CityInfoDataSupport.getInstance(this).close();

}

}

總結

以上是生活随笔為你收集整理的mysql查询市区县_通过数据库获取省份城市区县的名字的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。