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

我猜你真正的问题是“如何在 SQLite 数据库中存储时间或日期”?您需要将它们转换为整数以存储它们,然后转换回您阅读的任何内容。请查看关于该主题的 SQLite 文档的第 1.2 章:http ://www.sqlite.org/datatype3.html

于 2012-08-02T03:35:14.820 回答
0

我没有看到存储整数的问题 - 但是时间不等于整数。

您有 2 种可能性来存储日期/时间值。要么获取组件并分别存储每个组件,例如年、月、日、分钟、秒,要么将其存储为字符串 - 但您不能使用一个整数来存储日期/时间。

于 2012-08-02T05:04:09.670 回答