您可以通过 3 种相对简单的方法来完成此操作。
a) 创建一个代表您生成代码的公式,然后将生成的代码复制并粘贴到合适的位置。
b) 将数据保存为 csv 并将文件复制为资产,然后您可以打开并读取文件,提取数据并将其插入到数据库助手的 onCreate 方法中。
c) 将数据保存为 csv,并使用 SQLite 工具导入和加载数据,然后将该数据库复制为资产,然后使用该数据库。
选项A很简单,假设你有类似的东西:-
您的代码显示您有一个 insertCity 方法,该方法采用 City 对象。假设您使用City("Tokyo",37339804) 构建一个城市,然后插入一个城市,您的代码可能类似于:-
`insert(new ObjectCity("Tokyo",37339804L));`
然后您可以在单元格 C1 中输入一个公式为="insertCity(new ObjectCity("&CHAR(34)&A1&CHAR(34)&","&B1&"L));"。然后,您可以将此单元格复制到 c2-c1300(c2-c17 使用上面的电子表格)。生成的电子表格将如下所示:-
然后,您可以将生成的代码(单元格 c1-c1300)拖放复制并粘贴到合适的位置。
这是一个工作示例:-
ObjectCity 类:-
public class ObjectCity {
private String cityName;
private Long cityPopulation;
public ObjectCity(String cityName, Long cityPopulation) {
this.cityName = cityName;
this.cityPopulation = cityPopulation;
}
public String getCityName() {
return cityName;
}
public Long getCityPopulation() {
return cityPopulation;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public void setCityPopulation(Long cityPopulation) {
this.cityPopulation = cityPopulation;
}
}
DatabaseHelper DBHelper 类(基于问题中的代码):-
public class DBHelper extends SQLiteOpenHelper {
public static final String MI_TABLA_CITIES = "city";
public DBHelper(Context context) {
super(context, "theDatabase", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String crearTablaCities = "CREATE TABLE "+MI_TABLA_CITIES+" (ID_CITY INTEGER PRIMARY KEY AUTOINCREMENT, NAME_CITY TEXT, POPULATION_CITY INTEGER)";
db.execSQL(crearTablaCities);
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
}
public void insertCity(ObjectCity newCity){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
//cv.put("ID_CITY", newCity.getCityID());
cv.put("NAME_CITY", newCity.getCityName());
cv.put("POPULATION_CITY", newCity.getCityPopulation());
db.insert(MI_TABLA_CITIES,null,cv);
//db.close();
}
/* function to load the country data */
public void loadData() {
if(DatabaseUtils.queryNumEntries(this.getWritableDatabase(),MI_TABLA_CITIES)> 0) return;
insertCity(new ObjectCity("Tokyo",37339804L));
insertCity(new ObjectCity("Delhi",31181376L));
insertCity(new ObjectCity("Shanghai",27795702L));
insertCity(new ObjectCity("Sao Paulo",22237472L));
insertCity(new ObjectCity("Mexico City",21918936L));
insertCity(new ObjectCity("Dhaka",21741090L));
insertCity(new ObjectCity("Cairo",21322750L));
insertCity(new ObjectCity("Beijing",20896820L));
insertCity(new ObjectCity("Mumbai",20667656L));
insertCity(new ObjectCity("Osaka",19110616L));
insertCity(new ObjectCity("Karachi",16459472L));
insertCity(new ObjectCity("Chongqing",16382376L));
insertCity(new ObjectCity("Istanbul",15415197L));
insertCity(new ObjectCity("Buenos Aires",15257673L));
insertCity(new ObjectCity("Kolkata",14974073L));
insertCity(new ObjectCity("Kinshasa",14970460L));
insertCity(new ObjectCity("Lagos",14862111L));
}
}
-
注意 loadData 方法。
- 这使用 DatabaseUtils queryNumEntries 方法来检查是否存在任何数据,并且仅当表中没有行时才加载数据。
- 其余代码是从上面的电子表格中复制和粘贴的(第二张图片)。
最后一个调用活动 MainActivity :-
public class MainActivity extends AppCompatActivity {
DBHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DBHelper(this);
db.loadData(); //<<<<< LOADS THE CITY DATA (if not already loaded)
}
}
结果
运行上述程序并使用 Android Studio 的 Database Inspector 显示:-