2014-01-10 5 views
0

나는 단위 변환 응용 프로그램을 만들려고 노력하고있어 지금의 나는이 같은 string.xml 파일 내에서 단위 영역의 배열을했습니다 :SQLiteDatabase를 만들고이를 사용하여 회 전자를 채우는 방법?

<string-array name="weight_name_array"> 
     <item>Gram</item> 
     <item>Pound</item> 
     <item>Ounce</item> 
    </string-array> 
    <string-array name="weight_value_array"> 
     <item>1.0</item> 
     <item>453.59237</item> 
     <item>28.3495</item> 
    </string-array> 

이 나는 ​​이것을 대체 할 싶습니다 SQLiteDatabase는 WeightLength 두 테이블로 구성되어 있지만 SQLiteDB를 사용하는 데있어 매우 익숙하며 지침을 검색하려고 시도했지만 진행 방법을 이해할 수없는 것 같습니다.

각 테이블에 두 개의 열 (unitNameunitValue)을 넣은 다음 회 전자에 unitName을 표시하려고합니다. 어떤 도움을 주셔서 감사합니다.

답변

1

우선 XML 값으로 유지하는 것이 좋습니다. 변경된 번호가 없습니다. 데이터베이스는 실제로 변경되지 않는 정적 데이터의 경우가 아니라 데이터의 변경 또는 저장을 계속해서 저장하는 것입니다.

그건 그렇고, 안드로이드에서 SQLite 데이터베이스를 사용하는 방법에 관한 튜토리얼이 많이 있습니다. 기본 및 핵심 기능이기 때문입니다.

Vogella.com을 시도해보고 거기에 없으면 무엇이든 Google에 알려주세요.

+0

도움이 될 것입니다 생각합니다. 다른 방법으로도이 작업을 수행 할 수 있습니까? – guitarzero

+0

그렇다면 DB가 좋은 생각입니다 :) –

0

Youtube에서 기본적인 이해를 돕기 위해 http://www.youtube.com/watch?v=OUoGnvz_Yw4과 YouTube에서 제공되는 다른 튜토리얼을 참조하십시오. 그것과 함께, 당신은 - http://www.vogella.com/tutorials/AndroidSQLite/article.html을 볼 수 있습니다.

저는 자습서의 일부로 요구 사항 중 하나에서 SQLiteDatabase를 사용했습니다. 그것은 당신의 참조를 위해 테이블의 생성, 삽입 및 업그레이드 방법을 가지고 있습니다. 나는 것은 내가 DB 생각하고 있었는데 그 이유는 그래서, 사용자는 새로운 측정 영역과 새로운 유닛을 추가 할 수 있도록한다는 것이다 당신

StatusData.Java

import winterwell.jtwitter.Status; 
import android.content.ContentValues; 
import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteDatabase.CursorFactory; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

@SuppressWarnings("unused") 
public class StatusData { 
    static final String TAG = "StatusData"; 
    public static final String DB_NAME = "timeline.db"; 
    public static final int DB_VERSION = 1; 
    public static final String TABLE = "status"; 
    public static final String C_ID = "_id"; 
    public static final String C_CREATED_AT = "created_at"; 
    public static final String C_USER = "user_name"; 
    public static final String C_TEXT = "status_text"; 

    Context context; 
    DbHelper dbHelper; 
    SQLiteDatabase db; 

    public StatusData(Context context) { 
     this.context = context; 
     dbHelper = new DbHelper(); 
    } 

    public void insert(Status status) { 
     db = dbHelper.getWritableDatabase(); 
     ContentValues values = new ContentValues(); 

     values.put(C_ID, status.id.toString()); 
     values.put(C_CREATED_AT, status.createdAt.getTime()); 
     values.put(C_USER, status.user.name); 
     values.put(C_TEXT, status.text); 
     db.insert(TABLE, null, values); 
     db.insertWithOnConflict(TABLE, null, values, 
       SQLiteDatabase.CONFLICT_IGNORE); 
    } 

    class DbHelper extends SQLiteOpenHelper { 

     public DbHelper() { 
      super(context, DB_NAME, null, DB_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      String sql = String.format("Create Table : %s " 
        + "(%s int Primary Key, " + "%s int, %s text, %s text)", 
        TABLE, C_ID, C_CREATED_AT, C_USER, C_TEXT); 
      Log.d(TAG, "Oncreate with SQL : " + sql); 
      db.execSQL(sql); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      // Usually ALTER the TABLE 
      db.execSQL("drop if exists " + TABLE); 
      onCreate(db); 
     } 

    } 
관련 문제