如何确保所选日期在数据库中是相同的?

时间:2014-01-22 14:01:55

标签: android database datepicker

我将使用datepicker将DATE插入DATABASE。它将作为STRING存储在数据库中。我的另一步是检查日期。通过这个,我的意思是我将有一个edittext和一个按钮。在编辑文本中,它将使用数据标签选择日期。

单击按钮后,将检查数据库是否具有日期。如果有,它将指向另一个页面,否则它将没有这样的日期。

这是我的代码:

selection.java

public class selection extends Activity {


    Button newButton;
    Button updateButton;
    Button deleteButton;
    Button summaryButton;
    static EditText updateEdit;
    private int mYear;
    private int mMonth;
    private int mDay;

    static final int DATE_DIALOG_ID = 0;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.selection);

        updateEdit = (EditText)findViewById(R.id.updateEdit);


        updateEdit.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                   // showDialog(DATE_DIALOG_ID);
                    DialogFragment newFragment = new DatePickerFragment();
                    newFragment.show(getFragmentManager(), "datePicker");
                }
            });



        newButton = (Button) findViewById(R.id.newBTN);
         newButton.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {

                 Intent mainAct=new Intent(getApplicationContext(),MainActivity.class);
                 startActivity(mainAct);

            }

            });












         updateButton = (Button) findViewById(R.id.updateBTN);
         updateButton.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {

                 Intent updateAct=new Intent(getApplicationContext(),update.class);
                 startActivity(updateAct);

            }

            });
















         deleteButton = (Button) findViewById(R.id.deleteBTN);
         deleteButton.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {

                Intent updateAct=new Intent(getApplicationContext(),update.class);
                 startActivity(updateAct);

            }

            });

         summaryButton = (Button) findViewById(R.id.summaryBTN);
         summaryButton.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {

                Intent summaryView=new Intent(getApplicationContext(),summary.class);
                 startActivity(summaryView);

            }

            });



        }
    public static class DatePickerFragment extends DialogFragment
    implements DatePickerDialog.OnDateSetListener {

        public EditText editText;
        DatePicker dpResult;

    public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the current date as the default date in the picker

    final Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    //return new DatePickerDialog(getActivity(), (EditSessionActivity)getActivity(), year, month, day);

    // Create a new instance of DatePickerDialog and return it
    return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {

        updateEdit.setText(String.valueOf(day) + "/"
                + String.valueOf(month + 1) + "/" + String.valueOf(year));
        // set selected date into datepicker also


    }
    }
}

DBAdapter.java

public class DBAdapter {



    public static final String KEY_ROWID = "_id";
    public static final String KEY_DATE = "date";
    public static final String KEY_PRICE = "fuelprice";
    public static final String KEY_FUEL = "fuelpump";
    public static final String KEY_COST = "tcost";
    public static final String KEY_ODM = "odometer";
    public static final String KEY_CON = "fcon";

    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "MyDB";
    private static final String DATABASE_TABLE = "fuelLog";
    private static final int DATABASE_VERSION = 2;



    private static final String DATABASE_CREATE =
            "create table fuelLog (_id integer primary key autoincrement, " + "date text not null, fuelprice text not null, fuelpump text not null, tcost text not null, odometer text not null, fcon text not null);";


        private final Context context;    

        private DatabaseHelper DBHelper;
        private SQLiteDatabase db;

        public DBAdapter(Context ctx){
            this.context = ctx;
            DBHelper = new DatabaseHelper(context);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper 
        {
            DatabaseHelper(Context context){
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }

            public void onCreate(SQLiteDatabase db) 
            {
                try{
                    db.execSQL(DATABASE_CREATE);    
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }//onCreate

            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
            {
                Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                        + newVersion + ", which will destroy all old data");
                db.execSQL("DROP TABLE IF EXISTS contacts");
                onCreate(db);
            }//onUpgrade

        }//DatabaseHelper


        public DBAdapter open() throws SQLException 
        {
            db = DBHelper.getWritableDatabase();
            return this;
        }//open


        //---closes the database---    
        public void close() 
        {
            DBHelper.close();
        }//close


        //---insert a log into the database---
        public long insertLog(String date, String fuelprice, String fuelpump,String tcost,String odometer,String fcon ) 
        {
            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_DATE, date);
            initialValues.put(KEY_PRICE, fuelprice);
            initialValues.put(KEY_FUEL, fuelpump);
            initialValues.put(KEY_COST, tcost);
            initialValues.put(KEY_ODM, odometer);
            initialValues.put(KEY_CON, fcon);


            return db.insert(DATABASE_TABLE, null, initialValues);
        }//insertLog
        }

selection.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
     android:orientation="vertical"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" >


   <TableLayout 
        android:id="@+id/tableLayout1" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:stretchColumns="1 ">

        <TableRow 
            android:id="@+id/tableRow1" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content">

             <Button
            android:id="@+id/newBTN"
            android:text="New"
            android:layout_width="wrap_content"
            android:layout_height="60px" >
        </Button>
       </TableRow>

         <TableRow 
            android:id="@+id/tableRow2" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <Button
            android:id="@+id/updateBTN"
            android:text="Update"
            android:layout_width="wrap_content"
            android:layout_height="60px" >
        </Button>
            <EditText
                android:id="@+id/updateEdit" 
                android:text="" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                  android:editable="false"
                android:enabled="true">
            </EditText>
        </TableRow>
         <TableRow 
            android:id="@+id/tableRow3" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <Button
            android:id="@+id/deleteBTN"
            android:text="Delete"
            android:layout_width="wrap_content"
            android:layout_height="60px" >
        </Button>
            <EditText
                android:id="@+id/deleteEdit" 
                android:text="" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </EditText>
        </TableRow>


          <TableRow 
            android:id="@+id/tableRow4" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >
            <Button
            android:id="@+id/summaryBTN"
            android:text="Summary"
            android:layout_width="wrap_content"
            android:layout_height="60px" >
        </Button>

        </TableRow>




        </TableLayout>





</LinearLayout>

1 个答案:

答案 0 :(得分:1)

DBAdapter中实施一种方法,将日期转换为数组或arraylist,例如datesList

public ArrayList<String> getAllDates() {
        ArrayList<String> datesList = new ArrayList<String>();

        Cursor cursor = database.query(MySQLiteHelper.DATABASE_TABLE,
                yourColumn, null, null, null, null, null);

        cursor.moveToLast();
        while (!cursor.isBeforeFirst()) {

            // I am thinking your date is located at 1
            String date = cursor.getString(1);
            datesList.add(date);
            cursor.moveToPrevious();
        }
        // Make sure to close the cursor
        cursor.close();
        return datesList;
    }

为了比较日期,启动一个循环,如:

DBAdapter adapter = new DBAdapter();
adapter.open();
ArrayList <String> datesList = adapter.getAllDates();
for (String d:datesList){
        if (d.equals(date)){
            // do something

            return;
        }
    }

重要的是,来自数据库和日期选择器的日期模式很重要,例如“dd / MM / yyyy”。希望它有所帮助