在logcat中,我有以下错误:
12-05 19:20:26.696: E/SQLiteDatabase(1415): Error inserting lon=5.25 lat=7.52 name=null
12-05 19:20:26.696: E/SQLiteDatabase(1415): android.database.sqlite.SQLiteException: no such table: position (code 1): , while compiling: INSERT INTO position(lon,lat,name) VALUES (?,?,?)我尝试在名为: position的表中插入3个值: name、lat、lon。在代码中,我没有任何错误,应用程序也不会崩溃。我已经将该值的插入事件附加到带有onClickListener的按钮上(当用户按下该按钮时,插入该值)。
数据库创建的代码:
公共类listagpsdb { SQLiteDatabase mDb;DbHelper mDbHelper;Context mContext;私有静态最终字符串DB_NAME="listagps";私有静态最终int DB_VERSION=1;公共listagpsdb(上下文ctx){ mContext=ctx;mDbHelper=new DbHelper(ctx,DB_NAME,null,DB_VERSION);} public void (){ //il数据库su cuièleggibile/scrivibile mDb=mDbHelper.getWritableDatabase();} public mDb.close(){ mDb.close();} public void insertPosition(String name,double lat,double insertPosition){ ContentValues cv=new ContentValues();cv.put(PositionsMetaData.POSITIONS_NAME_KEY,name);cv=new lat);mDb.insert(PositionsMetaData.POSITIONS_TABLE,null,cv);}公共游标fetchProducts(){返回mDb.query(PositionsMetaData.POSITIONS_TABLE,null,null);}静态类PositionsMetaData {静态最终字符串POSITIONS_TABLE =“位置”;静态最终字符串ID = "_id";静态最终字符串POSITIONS_NAME_KEY =“名称”;静态最终字符串POSITIONS_LATITUDE_KEY = "lat";静态最终字符串POSITIONS_LONGITUDE_KEY = "lon";}私有静态最终字符串POSITIONS_TABLE_CREATE =“如果不存在创建表”+ PositionsMetaData.POSITIONS_TABLE + (“+ PositionsMetaData.ID+”整数主键自动递增、“+ PositionsMetaData.POSITIONS_NAME_KEY +”文本、“+ PositionsMetaData.POSITIONS_LATITUDE_KEY +”双null);“+ PositionsMetaData.POSITIONS_LONGITUDE_KEY + "double null”;;私有类DbHelper扩展了SQLiteOpenHelper {公共DbHelper(上下文、字符串名称、CursorFactory工厂、int版本){超级(上下文、名称、工厂、版本);} @Override (SQLiteDatabase _db) { _db.execSQL(POSITIONS_TABLE_CREATE);@覆盖公共无效onUpgrade(SQLiteDatabase _db,int oldVersion,int newVersion) {} }
在您看到的代码中,我只希望在创建数据库时才创建表。
这是活动类的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navi);
Button SalvaLocation = (Button) findViewById(R.id.SalvaLocation);
final listagpsdb db = new listagpsdb(getApplicationContext());
SalvaLocation.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
String name = null;
Double lat = 7.52;
Double lon = 5.25;
db.insertPosition(name, lat, lon);
db.close();
}
});现在我不明白为什么没有创建数据库/表。有谁有主意吗?,如果数据库是创建的,那么在AVD内存中有一个窍门要看吗?
谢谢大家都想帮我!
发布于 2012-12-06 10:58:03
在PositionsMetaData.POSITIONS_LATITUDE_KEY更新您的代码。
private static final String POSITIONS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS"
+ PositionsMetaData.POSITIONS_TABLE + " ("
+ PositionsMetaData.ID+ " integer primary key autoincrement, "
+ PositionsMetaData.POSITIONS_NAME_KEY + " text, "
+ PositionsMetaData.POSITIONS_LATITUDE_KEY + " double not null,"
+ PositionsMetaData.POSITIONS_LONGITUDE_KEY + " double not null);";发布于 2012-12-06 10:22:10
是的,如果数据库已经创建,您可以看到它!
去Window -> show view -> File Explorer ..。
在那里去data -> data -> your package name-> and Database -> Your db
之后,您可以使用SQL打开数据库和文件。
https://stackoverflow.com/questions/13741385
复制相似问题