2012-08-02 2 views
0

SQLite 데이터베이스에 정수 값을 저장하는 데 문제가 있습니다.
내 코드는 다음과 같습니다.EditText의 정수 값을 SQLite 데이터베이스에 저장하는 방법 [Android]

위에서 볼 수 있듯이, 나는에 글고에서 텍스트 값을 저장하기 위해 관리해야

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; 

    } 

} 

Create_Events.java의 내 삽입 코드 데이터베이스가 성공적으로. 그래서 지금 데이터베이스에 starttime (Integer)을 저장하려고합니다.
도움이 될 것입니다. 무리 감사!

+1

정확히 무엇이 문제입니까? 'starttime'에 대해 항상 0을 전달하는 것처럼 보입니까? 저장되지 않는다는 것을 어떻게 알 수 있습니까? – cklab

+0

아니요, 텍스트 값을 데이터베이스에 삽입 할 수 있는지 테스트하려는 경우 0을 넣습니다. 데이터베이스에 삽입되지만 editText에서 삽입하려고하면 정수를 삽입 할 수 없습니다. – CallMyName

답변

1

당신의 진짜 질문은 "시간 또는 날짜를 SQLite 데이터베이스에 저장하는 방법"이라고 생각하십니까? 정수로 변환하여 저장하고 다시 읽으려면 변환해야합니다. 해당 항목에 대한 SQLite 문서의 1.2 장을 확인하십시오. http://www.sqlite.org/datatype3.html

+0

당신이 쉽게 원한다면 HH : MM을 Minutes (Integer)로 변환하고 간단한 자바 코드를 사용하여 되 돌린다.) – Oliver

+0

안녕하세요, 당신이 제공 한 웹 사이트를 방문했는데 그것이 나에게 도움이되었다고 생각하지 않습니다. 웹 사이트에서 우리는 정수로 시간을 저장할 수 있습니다. 그리고 그것은 내가 위의 코드에서했던 것입니다. 나는 데이터베이스에 시간 만 저장하고 싶었고 시간이나 다른 것을 변환하고 싶지 않았습니다. – CallMyName

+0

@CallMyName, 당신의 코드는 * 문자열 *을 * 편집 *에서 * 정수 *로 변환하는 것에 대한 어떠한 수단도 가지고 있지 않습니다. 실제로 "calDB.insertEvent (title, location, 0, 0);"두 코드에 "0"을 저장하고 있습니다. 당신은 데이터베이스에 0을 저장하지 않고 아무것도 저장하지 않았습니다. 그래서 저는 여러분이 Time-string을 Integer로 변환하는데 문제가 있다고 가정해야합니다. 예를 들어 "04:40"은 Integer가 아니라 String입니다. – Oliver

0

정수를 저장하는 데 문제가 나타나지 않지만 시간이 정수가 아닙니다.

날짜/시간 값을 저장할 수있는 가능성은 두 가지가 있습니다. 구성 요소를 가져 와서 각각 별도로 년, 월, 일, 분, 초를 저장하거나 문자열로 저장하십시오. 단 하나의 정수로 날짜/시간을 저장할 수는 없습니다.

관련 문제