2016-05-28 3 views
-1

私はAndroid開発には初めてです。
JSONを使用してSQLiteに格納するアプリケーションを作成し、データをオフラインで使用しました。
データベースに保存できますが、オフラインでアクセスするたびに、アプリは重複したデータベースを表示します。アップグレード時にSQLiteの重複テーブル

データベースをアップグレードする際の問題は、テーブルを削除していないということです。

Myatabase

public class DBHandler extends SQLiteOpenHelper implements CityListener { 
private static final int DATABASE_VERSION = 2; 
private static final String DB_NAME = "CityDatabase.db"; 
private static final String TABLE_NAME = "dataku"; 
private static final String KEY_ID = "_id"; 
private static final String KEY_JUDUL = "_judul"; 
private static final String KEY_ISI = "_isi"; 

String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+"("+KEY_ID+" INTEGER PRIMARY KEY,"+KEY_JUDUL+" TEXT,"+KEY_ISI+" TEXT)"; 
String DROP_TABLE = "DROP TABLE IF EXISTS " + TABLE_NAME; 

public DBHandler(Context context) { 
    super(context, DB_NAME, null, DATABASE_VERSION); 
} 

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(CREATE_TABLE); 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    db.execSQL(DROP_TABLE); 
    onCreate(db); 
} 

マイ・フラグメント

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.activity_posts_list, null); 


    String url = "http://wisatake.com/test/dataku.php"; 

    feedListView= (ListView) v.findViewById(R.id.custom_list); 
    feedListView.setVisibility(View.VISIBLE); 
    handler = new DBHandler(getActivity()); 
    NetworkUtils utils = new NetworkUtils(getActivity()); 
    if(utils.isConnectingToInternet()) 
    { 
     new DownloadFilesTask().execute(url); 
    } 
    else 
    { 
     ArrayList<FeedItem> feedList = handler.getAllCity(); 
     feedListView.setAdapter(new CustomListAdapter(getActivity(), feedList)); 
     feedListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
       Object o = feedListView.getItemAtPosition(position); 
       FeedItem newsData = (FeedItem) o; 

       Intent intent = new Intent(getActivity(), FeedDetailsActivity.class); 
       intent.putExtra("feed", newsData); 
       startActivity(intent); 
      } 
     }); 
    } 
    return v; 
} 
+1

あなたの 'CREATE TABLE'ステートメントに' IF NOT EXISTS'を追加してみてください。 –

+0

ありがとうございますが、動作していません –

+0

あなたのアプリをアンインストールして再インストールしてください。 –

答えて

0

私は問題を発見しました。 私はdb sqliteで主キー(ID)を追加しませんでした。多分私はsqliteの主キーを追加しないでください重複します。

関連する問題