删除表如果存在不适用于Android中的SQlite数据库

时间:2015-03-30 07:39:26

标签: android database sqlite

我在数据库上有一个SQLite数据库,我从PHP Server存储该数据库,我克里特数据库,如果我向PHP数据库添加新值,它会出现在我的Android设备上,但是......

我的问题

当我删除一个值到Server数据库时,在我的设备上没有从sqlite数据库中删除,只有当我从php数据库中删除值时数据库才会更新,但是当我添加值时,yes是有效的...

代码DDBB

public class BBDD extends SQLiteOpenHelper
{
    private static final String KEY_ID = "id";

 String crear = "CREATE TABLE types(KEY_ID INTEGER PRIMARY KEY," +
                                            "value TEXT) ";


    public BBDD (Context contexto, String nombre, CursorFactory factory,
                 int version)
    {
        super(contexto, nombre, factory, version);
    }

    public void onCreate (SQLiteDatabase db)
    {
        db.execSQL(crear);
    }

    public void onUpgrade (SQLiteDatabase db, int versionAnt, int versionNue)
    {
        db.execSQL("DROP TABLE IF EXISTS types");
        db.execSQL(crear);

    }

为什么不起作用DROP TABLE IF EXITS

有什么建议吗?

编辑(活动我打电话给BBDD.JAVA)

//declare
public BBDD types;
//.........

try
   {
                            JSONObject jresponse = new JSONObject(responseBody);

                            Map<String, String> types = new HashMap<String, String>();

                            Iterator<String> iterator = jresponse.keys();
                            while (iterator.hasNext())
                            {
                                String idType = iterator.next();
                                String nametype = (String) jresponse.get(idType);

                                tipos.put(idType, nametype );

                                //save on database
                                types = new BBDD(SplashScreen.this, "BBDD", null, 1);
                                SQLiteDatabase db= types.getWritableDatabase();

                                registro = new ContentValues();
                                registro.put("KEY_ID", idType);
                                registro.put("value", nametype );

                                if (db.insert("types", null, registro) != -1)
                                {

                                    db.close();
                                }
                                else
                                {

                                }
                            }


                        } catch (JSONException e)
                        {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }

2 个答案:

答案 0 :(得分:0)

onUpgrade调用用于在您发布应用的新版本时管理数据库架构。 这与将数据与服务器同步无关。

如果您需要更新或删除行,则必须通过致电update()delete()手动执行此操作。

答案 1 :(得分:0)

1 - 这是EXISTS,而不是EXITS 2 - 您正在使用错误的id列名创建表:

"CREATE TABLE types(KEY_ID INTEGER PRIMARY KEY," +
                                        "value TEXT) ";

你想要这个,而不是:

"CREATE TABLE types(" + KEY_ID + " INTEGER PRIMARY KEY," +
                                        "value TEXT) ";`  

3 - 要激活onUpgrade()方法,您必须{{1>} DATABASE_VERSION 常量