2013-05-09 65 views
0

目前我的SQLite數據庫工作得很好,我已經閱讀了各種方法,如this one來實現這一目標,儘管目前我在設置Date構造函數時遇到問題,以及如何定義使用的數據在把它的數據庫(和得到它回來了!)Android將DATE(now)添加到SQLite數據庫

到目前爲止,我已經使用靜態最後絃樂來定義我的數據變量,notsure這是使用日期的正確方法。

我不關心的時候,只是入門的創建日期。

下面是我的java類:

import java.sql.Date; 
import java.text.SimpleDateFormat; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class Stats { 

    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_WEIGHT = "weight"; 
    public static final String KEY_WAIST = "waist"; 
    public static final String KEY_CHEST = "chest"; 
    public static final String KEY_LEGS = "legs"; 
    public static final String KEY_ARMS = "arms"; 
    public static final String KEY_DATE = "date"; 


    private static final String DATABASE_NAME = "statsDB"; 
    private static final String DATABASE_TABLE = "personalStats"; 
    private static final int DATABASE_VERSION = 3; 

    private DbHelper ffHelper; 
    private final Context ffContext; 
    private SQLiteDatabase ffDatabase; 

    private static class DbHelper extends SQLiteOpenHelper { 

     public DbHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 

     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + KEY_ROWID 
        + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_WEIGHT 
        + " TEXT NOT NULL, " + KEY_WAIST + " TEXT NOT NULL, " 
        + KEY_CHEST + " TEXT NOT NULL, " + KEY_LEGS 
        + " TEXT NOT NULL, " + KEY_ARMS + " TEXT NOT NULL, " 
        + KEY_DATE + " TEXT NOT NULL);"); 

     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); 
      onCreate(db); 

     } 
    } 

    public Stats(Context c) { 
     ffContext = c; 
    } 

    public Stats open() throws SQLException { 
     ffHelper = new DbHelper(ffContext); 
     ffDatabase = ffHelper.getWritableDatabase(); 
     return this; 

    } 

    public void close() { 
     ffHelper.close(); 

    } 

    public long createEntry(String weight, String waist, String chest, String legs, String arms) { 
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     Date date = new Date(); 
     ContentValues cv = new ContentValues(); 
     cv.put(KEY_WEIGHT, weight); 
     cv.put(KEY_WAIST, waist); 
     cv.put(KEY_CHEST, chest); 
     cv.put(KEY_LEGS, legs); 
     cv.put(KEY_ARMS, arms); 
     cv.put("date_created", dateFormat.format(date)); 
     return ffDatabase.insert(DATABASE_TABLE, null, cv); 

    } 

    public String getData() { 
     String[] columns = new String[] { KEY_ROWID, KEY_WEIGHT, KEY_WAIST, KEY_CHEST, KEY_LEGS, KEY_ARMS, KEY_DATE }; 
     Cursor c = ffDatabase.query(DATABASE_TABLE, columns, null, null, null, 
       null, null); 
     String result = ""; 
     int iRow = c.getColumnIndex(KEY_ROWID); 
     int iWeight = c.getColumnIndex(KEY_WEIGHT); 
     int iWaist = c.getColumnIndex(KEY_WAIST); 
     int iChest = c.getColumnIndex(KEY_CHEST); 
     int iLegs = c.getColumnIndex(KEY_LEGS); 
     int iArms = c.getColumnIndex(KEY_ARMS); 
     int iDate = c.getColumnIndex(KEY_DATE); 
     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
      result = result + c.getString(iRow) + " " + c.getString(iWeight) 
        + " " + c.getString(iWaist) 
        + " " + c.getString(iChest) 
        + " " + c.getString(iLegs) 
        + " " + c.getString(iArms) 
        + " " + c.getString(iDate)+ "\n"; 

     } 

     return result; 
    } 
} 

顯然被提及任何時間日期是我嘗試添加這個額外的功能。

+0

問題出在哪裏準確?我們沒有成功插入當前日期?你有沒有錯誤日誌? – 2013-05-09 13:56:20

+0

問題是我不能輸入當前日期到我的數據庫,我導入了java.util中的類和我綁在幾種不同的方法的過程中日是否有人知道根據我目前做的最好的辦法,想知道碼? – dyatesupnorth 2013-05-09 14:00:15

+0

你應該把它聲明爲一個日期,而不是文本: 'KEY_DATE + 「DATE NOT NULL);」' ,改變您的格式: 'DATEFORMAT =新的SimpleDateFormat( 「YYYY-MM-DD」)' – 2013-05-09 14:03:16

回答

0

你可以把日期就像在數據庫中的字符串,但該字符串必須有良好的格式。 SQLite的是:

YYYY-MM-dd 
YYYY-MM-dd hh:mm 
YYYY-MM-dd hh:mm:ss 
YYYY-MM-dd hh:mm:ss.sss 
YYYY-MM-DDThh:mm 
YYYY-MM-DDThh:mm:ss 
YYYY-MM-DDThh:mm:ss.sss 
hh:mm 
hh:mm:ss 
hh:mm:ss.sss 

像約恩寫,你可以轉換日期字符串:

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

String dateForinsert = dateFormat(new GregorianCalendar(2013, GregorianCalendar.MAY, 5).getTime()); 

「現在,」 你可以用設置:

String dateForinsert = dateFormat(new GregorianCalendar().getTime()); 
相關問題