import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class CityDBHelper extends SQLiteOpenHelper { private static final int DB_VERSION = 5; private static final String DB_NAME = "china_cities.db"; public static final String TABLE_NAME = "city"; public CityDBHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { // create table Orders(Id integer primary key, CustomName text, OrderPrice integer, Country text); String sql = "create table if not exists " + TABLE_NAME + " (id integer primary key autoincrement, name varchar(50), pinyin varchar(300),areacode varchar(20))"; sqLiteDatabase.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS " + TABLE_NAME; sqLiteDatabase.execSQL(sql); onCreate(sqLiteDatabase); }
}
import android.content.ContentValues; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.saicmotor.SmApplication; import com.saicmotor.home.entity.City; import com.saicmotor.home.db.CityDBHelper; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import static CityDBHelper.TABLE_NAME; /** * Created by johnyin2015 on 2017/11/9. */ public class CityDao { private static SQLiteDatabase db; private static final CityDBHelper mHelper = new CityDBHelper(Application.mContext); public static void insertData(List<City> allCities){ db = mHelper.getWritableDatabase(); db.beginTransaction(); for (City city : allCities) { ContentValues contentValues = new ContentValues(); contentValues.put("name", city.getName()); contentValues.put("pinyin", city.getPinyin()); contentValues.put("areacode",city.getAreacode()); db.insertOrThrow(TABLE_NAME, null, contentValues); } db.setTransactionSuccessful(); } public static List<City> searchCity(final String keyword){ SQLiteDatabase db = mHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + CityDBHelper.TABLE_NAME +" where name like \"%" + keyword + "%\" or pinyin like \"%" + keyword + "%\"", null); List<City> result = new ArrayList<>(); City city; while (cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String pinyin = cursor.getString(cursor.getColumnIndex("pinyin")); String areacode = cursor.getString(cursor.getColumnIndex("areacode")); city = new City(name, pinyin,areacode); result.add(city); } cursor.close(); Collections.sort(result, new CityComparator()); return result; } /** * sort by a-z */ private static class CityComparator implements Comparator<City> { @Override public int compare(City lhs, City rhs) { String a = lhs.getPinyin().substring(0, 1); String b = rhs.getPinyin().substring(0, 1); return a.compareTo(b); } } public static List<City> searchCityByName(final String keyword){ SQLiteDatabase db = mHelper.getReadableDatabase(); Cursor cursor = db.rawQuery("select * from " + CityDBHelper.TABLE_NAME +" where name like \"%" + keyword + "%\" or pinyin like \"%" + keyword + "%\"", null); List<City> result = new ArrayList<>(); City city; while (cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String pinyin = cursor.getString(cursor.getColumnIndex("pinyin")); city = new City(name, pinyin); result.add(city); } cursor.close(); Collections.sort(result, new CityComparator()); return result; } }