我用自己建好的数据库map.db在doc中用命令
adb push D:/map.db /data/data/com.map/databases/map.db把数据导入到项目中,
public class DatabaseHelper extends SQLiteOpenHelper { private static final int VERSION = 1; //在SQLiteOepnHelper的子类当中,必须有该构造函数 public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { //必须通过super调用父类当中的构造函数 super(context, name, factory, version); // TODO Auto-generated constructor stub } public DatabaseHelper(Context context,String name){ this(context,name,VERSION); } public DatabaseHelper(Context context,String name,int version){ this(context, name,null,version); } //该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabse对象的时候,才会调用这个方法 @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.println("create table"); // db.execSQL("CREATE TABLE point(id integer PRIMARY KEY AUTOINCREMENT NOT NULL,Latitude varchar(20),Longitude varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub // db.execSQL("DROP TABLE IF EXISTS point"); // System.out.println("drop"); }
这里是一个查询事件
class QueryListener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub DatabaseHelper dbHelper=new DatabaseHelper(MainActivity.this,"map.db"); SQLiteDatabase db=dbHelper.getReadableDatabase(); Cursor cursor=db.query("point", new String[]{"id", "Latitude","Longitude"}, "id=?", new String[]{"1"}, null, null, null); while(cursor.moveToNext()); String Latitude=cursor.getString(cursor.getColumnIndex("Latitude")); System.out.println(Latitude); }
执行代码时会报错
我没导入数据库,也是这个错误。你DatabaseHelper dbHelper=new DatabaseHelper(MainActivity.this,"map.db");这里已经指定了数据库了。主要是这个数据库怎么搞出来我很不明白
妈蛋,我的create table没加table
还是错
卸载APP后重新安装或者升级数据库版本号。不卸载的话,因为用的还是旧的版本号,openhelper不会再次调用创建数据库表的方法,卸载重新安装,或者升级版本号可以解决。