SQLite数据库更新没有发生

时间:2016-11-12 13:12:43

标签: android sqlite android-sqlite updates

我正在尝试使用来自用户的输入更新数据库,但数据库没有更新。以下是我的java代码,其中用户提供了新的输入&另一个DatabaseHelper代码,我正在尝试更新数据库。

UpdateTour.java

public class TourActivity extends AppCompatActivity {

DatabaseHelper db;
private LayoutInflater inflater;
private FloatingActionButton fab;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tour);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    db = new DatabaseHelper(getApplicationContext());

    displayList();
    ListView tourList = (ListView) findViewById(R.id.tour_listview);


    tourList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            inflater = TourActivity.this.getLayoutInflater();
            View content = inflater.inflate(R.layout.activity_add_new_trip, null);
            final EditText editEvent = (EditText) content.findViewById(R.id.edTxt_EventName);
            final EditText editCashCarried = (EditText) content.findViewById(R.id.edTxt_CashCarried);
            final EditText editOnTour = (EditText) content.findViewById(R.id.edTxt_TourCollection);

            String ID = String.valueOf(db.getEventID(position));
            String NAME = db.getTourName(position + 1);
            String CASH = db.getOnTour(position + 1);
            String CASHCARRIED = db.getCashCarried(position + 1);

            editEvent.setText(NAME);
            editCashCarried.setText(CASH);
            editOnTour.setText(CASHCARRIED);

            AlertDialog.Builder builder = new AlertDialog.Builder(TourActivity.this);
            builder.setView(content)
                    .setTitle("Edit Event")
                    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            Tour tour = new Tour();

                            //tour.setEventId((int) System.currentTimeMillis());
                            tour.setEventName(editEvent.getText().toString());
                            tour.setCashCarried(editCashCarried.getText().toString());
                            tour.setOnTourCollection(editOnTour.getText().toString());

                            db.updatesTour(tour);
                            displayList();

                        }
                    })
                    .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
            AlertDialog dialog = builder.create();
            dialog.show();

            return true;
        }
    });
}



private void displayList() {
    ListView tourListView = (ListView) findViewById(R.id.tour_listview);

    TourAdapter tourAdapter = new TourAdapter(
            this,
            R.layout.tour_list,
            db.getAllTours()
    );

    tourListView.setAdapter(tourAdapter);
    registerForContextMenu(tourListView);
}
}

DBHelper.java

public boolean updatesTour(Tour tour) {
    SQLiteDatabase db = this.getWritableDatabase();

    ContentValues values = new ContentValues();
    values.put(KEY_EVENTNAME, tour.getEventName());
    values.put(KEY_EVENTSTARTDATE, tour.getEventStartDate());
    values.put(KEY_EVENTENDDATE, tour.getEventEndDate());
    values.put(KEY_LEADERS, tour.getLeaders());
    values.put(KEY_CASHCARRIED, tour.getCashCarried());
    values.put(KEY_ONTOURCOLLECTION, tour.getOnTourCollection());
    values.put(KEY_CREATED_AT, getDateTime());
    values.put(KEY_UPDATED_AT, getDateTime());

    int i = db.update(TABLE_TOUR, values, KEY_ID + " = " + tour.getId(), null);

    return i > 0;
}

1 个答案:

答案 0 :(得分:2)

在onclick方法中,您尚未设置游览对象的id

tour.setId(ID);

所以id为null

试试这个:

int i = db.update(TABLE_TOUR, values, KEY_ID + "=?" , new String[]{tour.getId()});