簡體   English   中英

sqlite:如何在android應用程序的sqlite數據庫中插入時間

[英]sqlite: how to insert time in sqlite database from android application

我有兩個edittext,當我點擊它時會彈出timepickerdialog,時間將在edittext中為我的代碼設置,

  int TIME_PICKER_ID = 1,hour,minute,flag;

  edittext_starttime.setOnClickListener(this);
  edittext_endtime.setOnClickListener(this);

    final Calendar c = Calendar.getInstance();
    hour = c.get(Calendar.HOUR_OF_DAY);
    minute = c.get(Calendar.MINUTE);

  @Override
   public void onClick(View v) {
     if(v.getId() == R.id.editText_starttime_stsa){
        flag = 1;
        showDialog(TIME_PICKER_ID);
    }//editText_starttime_stsa

    if(v.getId() == R.id.editText_endtime_stsa){
        flag = 2;
        showDialog(TIME_PICKER_ID);
    }//editText_endtime_stsa

    if(v.getId() == R.id.button_create_stsa){
        onCreateAlert();
    }//button_create_susa       
}

   @Override
protected Dialog onCreateDialog(int id) {
    switch(id){
    case 1: 
return new TimePickerDialog(this, timePickerListener, hour, minute, false);
    }
    return null;
}

private TimePickerDialog.OnTimeSetListener timePickerListener = new     TimePickerDialog.OnTimeSetListener(){
    public void onTimeSet(TimePicker view,int selectedHour,int selectedMinute){
        hour = selectedHour;
        minute = selectedMinute;

        updateDisplay(hour,minute);
    }
};

private void updateDisplay(int hour, int minute) {
    if(flag==1){
        edittext_starttime.setText(new StringBuilder().append(pad(hour)).append(":").append(pad(minute)));
    }else if(flag==2){
        edittext_endtime.setText(new StringBuilder().append(pad(hour)).append(":").append(pad(minute)));
    }
}

private static String pad(int c) {
    if (c >= 10)
       return String.valueOf(c);
    else
       return "0" + String.valueOf(c);
}

我想在sqlite數據庫中插入start_time和end_time,因為我已經編寫了查詢,

String query = "insert into Status_Master(status_id, status_name, status_description,  timewindow_start, timewindow_end) values("+status_id+",'"+status_name+"','"+status_desc+"',time('"+start_time+"'),time('"+end_time+"'))";

但我收到了錯誤。 這是在數據庫中插入時間的正確方法嗎?

  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

  Date date1 = new Date();
  Date date2 = new Date();

    ContentValues initialValues = new ContentValues(); 
         initialValues.put("status_id",status_id);
         initialValues.put("status_name", status_name);
         initialValues.put("status_description", status_desc);



         initialValues.put("timewindow_start", dateFormat.format(date1));
          initialValues.put("timewindow_end", dateFormat.format(date2));

    long result= mDb.insert(DB_TABLE_NAME, null, initialValues);

這樣做吧。 首先創建數據庫,我的代碼就在這里。

public class AppDatabase extends SQLiteOpenHelper
{
    private final static String DATABASE_NAME="AppDB";
    public final static String TABLE_PASSWORD="password";
    public static int version=1;
    public Context cont;
    public AppDatabase(Context context)
    {
        super(context,DATABASE_NAME, null, version);
        this.cont=context;
    }

    @Override
    public void onCreate(SQLiteDatabase sqlDb)
    {
        sqlDb.execSQL("Create table password(_id INTEGER autoincreament PRIMARY KEY, monthOfBirth INTEGER)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqlDb, int old, int latest)
    {
        sqlDb.execSQL("DROP TABLE password");
        this.onCreate(sqlDb);
    }
 }

現在創建一個事務類,通過方法將值插入數據庫。

public long savePassword(int numberMonth)
    {
        long x=-1;
        sqliteDb=appDb.getWritableDatabase();
        ContentValues values=new ContentValues();
        values.put("monthOfBirth", numberMonth);
        try
        {
            if(sqliteDb.isOpen())
            {
                x=sqliteDb.insert("password", null, values);
                if(x>=0)
                {
                    //Toast.makeText(context, "Password Save", Toast.LENGTH_SHORT).show();
                }
            }
        }
        catch(Exception exc)
        {
            System.err.print(exc);
        }
    return x;
    }

現在,在您的活動中,只需從edittext中選擇值,然后通過Transaction的對象調用此方法。

trans = new Transactions(MainActivity.this);
                            long x = trans.savePassword(pMonth);
                            if (x >= 0)
                                {
                                    Toast.makeText(getBaseContext(), "Password Save in Database.", Toast.LENGTH_SHORT).show();
                                } 
                            else
                                {
                                    Toast.makeText(getBaseContext(), "Password didn't save.",   Toast.LENGTH_SHORT).show();
                                }

希望這會有所幫助。

請檢查SQLite站點並查看時間函數。 SQLite僅支持站點中列出的12種格式。 確保您提供的字符串格式正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM