0

SQLite データベースに整数値を保存する際に問題があります。
これが私のコードです。

Create_Events.java の挿入コード

Button btnCreate = (Button)findViewById(R.id.saveButton);
btnCreate.setOnClickListener(new OnClickListener()
{

        @Override
        public void onClick(View v)
        {
           calDB.open();
           long _id;
           EditText txtTitle = (EditText) findViewById(R.id.txtTitle);
          String title = txtTitle.getText().toString(); 
           EditText txtLocation = (EditText) findViewById(R.id.editText1);
           String location = txtLocation.getText().toString();
           EditText startTime = (EditText) findViewById(R.id.editText2);
           String startTime = startTime.getText().toString();
          _id = calDB.insertEvent(title, location, 0, 0);

           calDB.close();

        }

});

CalendarAdapter.java (データベース クラス)

package main.page;

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;
import android.util.Log;

public class CalendarAdapter
{
    public static final String KEY_ROWID = "_id";
    public static final String KEY_TITLE = "title";
    public static final String KEY_LOCATION = "location";
    public static final String KEY_START = "starttime";
    public static final String KEY_END = "endtime";
    private static final String TAG = "DBAdapter";

    private static final String DATABASE_NAME = "anniversary";
    private static final String DATABASE_TABLE = "calendar";
    private static final int DATABASE_VERSION = 2;

    private static final String DATABASE_CREATE = "create table calendar(_id integer primary key autoincrement,"+
    "title text not null, location text not null, starttime integer, endtime integer);";

    private final Context context;

    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;


    public CalendarAdapter(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);
        }

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

        }

        @Override
        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 calendar");
            onCreate(db);
        }

    }

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

    public void close()
    {
        DBHelper.close();
    }

    public long insertEvent(String title, String location, int starttime, int endtime)
    {
       ContentValues initialValues = new ContentValues();
       initialValues.put(KEY_TITLE, title);
       initialValues.put(KEY_LOCATION, location);
       initialValues.put(KEY_START, starttime);
       initialValues.put(KEY_END, endtime);
       return db.insert(DATABASE_TABLE, null, initialValues);

    }

    public boolean deleteEvent(long rowId)
    {
        return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
    }

    public Cursor getAllEvents()
    {
        return db.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_LOCATION, KEY_START, KEY_END}, null, null, null, null, null);

    }

    public Cursor getEvent(long rowId) throws SQLException
    {
        Cursor c = db.query(true, DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, KEY_LOCATION, KEY_START, KEY_END}, KEY_ROWID + "=" + rowId, null, null, null, null, null);
        if(c != null)
        {
            c.moveToFirst();
        }
        return c;
    }

    public boolean updateEvent(long rowId, String title, String location, int starttime, int endtime)
    {
        ContentValues args = new ContentValues();
        args.put(KEY_TITLE, title);
        args.put(KEY_LOCATION, location);
        args.put(KEY_START, starttime);
        args.put(KEY_END, endtime);
        return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;

    }

}

上記のように、EditText のテキスト値をデータベースに正常に格納できました。だから今、starttime(Integer) をデータベースに保存しようとしています。
どんな助けでも大歓迎です。本当にありがとう!

4

2 に答える 2

1

あなたの本当の質問は「TIMEまたはDATEをSQLiteデータベースに保存する方法」だと思いますか? それらを整数に変換して保存し、読み取るために何にでも変換する必要があります。そのトピックに関する SQLite ドキュメントの 1.2 章を確認してください: http://www.sqlite.org/datatype3.html

于 2012-08-02T03:35:14.820 に答える
0

整数の保存に問題はありませんが、時間は整数と同等ではありません。

日付/時刻の値を保存する方法は 2 つあります。コンポーネントを取得し、年、月、日、分、秒のようにそれぞれを個別に保存するか、文字列として保存しますが、日付/時刻を単一の整数で保存することはできません。

于 2012-08-02T05:04:09.670 に答える