마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SQLite 데이터 질문있쪄요

0 추천

그림에서 빨강친 부분의 내용을 고치고 싶은데요.

name, age를 Data, Power로 고치고 싶은데요

제 생각으로는 onCreate 부분일까해서 고쳐봤습니다. 하지만 안되더라구ㅛ.

db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
     " name TEXT, age INTEGER);");

위 소스를 수정해봤는데 수정이 안되더라구요 ㅜ.ㅜ

어딜 고쳐야 하는지 궁금합니다.

소스는 다음과 같구요.

 

package com.example.last;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {
   
 EditText nameEdit;
 EditText ageEdit;
 TextView result;
 
 DBHelper dbHelper;
 
 final static String dbName = "Person.db";
 final static int dbVersion = 1;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        nameEdit = (EditText)findViewById(R.id.nameedit);
        ageEdit = (EditText)findViewById(R.id.ageedit);
        result = (TextView)findViewById(R.id.result);
       
        dbHelper = new DBHelper(this, dbName, null, dbVersion);
    }
   
    public void mOnClick(View v){
     SQLiteDatabase db;
     String sql;
     switch (v.getId()) {
  case R.id.insert: //추가 버튼(insert)
    
      String name = nameEdit.getText().toString();
      String age = ageEdit.getText().toString();
      //String Data = result.getText().toString();
  
      db = dbHelper.getWritableDatabase();
      sql = String.format("INSERT INTO person VALUES(NULL, '%s', '%s');", name, age);
      db.execSQL(sql);  
      result.append("\nInsert Success");
     
      TimeZone timezone = TimeZone.getTimeZone("Etc/GMT-9");
   TimeZone.setDefault(timezone);
    
   SimpleDateFormat formater = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.KOREA);
   Date current = new Date();
    
   String mtime = formater.format(current);
   System.out.println(mtime);
   result.setText(result.getText().toString() + "\n"+ mtime + "  dBm");           
   break;

  case R.id.delete: //전체삭제 버튼(delete)
   db = dbHelper.getWritableDatabase();
   sql = "DELETE FROM person;";
   db.execSQL(sql);
   result.append("\nDelete Success");
   break;
 
  case R.id.update: //전체수정 버튼(update)
   db = dbHelper.getWritableDatabase();
   sql = "UPDATE person SET age=0;";
   db.execSQL(sql);
   result.append("\nUpdate Success");
   break;
 
  case R.id.select: //조회 버튼(select)
   db = dbHelper.getReadableDatabase();
   sql = "SELECT * FROM person;";
   Cursor cursor = db.rawQuery(sql, null);
   if(cursor.getCount() > 0){
    while(cursor.moveToNext()){
     result.append(String.format("\n이름 = %s, 나이 = %s",
         cursor.getString(1), cursor.getString(2)));
    }
   }else{
    result.append("\n조회결과가 없습니다.");
   }
   cursor.close();
   break;  
  }
     dbHelper.close();
    }
   
    class DBHelper extends SQLiteOpenHelper{

     //생성자 - database 파일을 생성한다.
  public DBHelper(Context context, String name, CursorFactory factory, int version) {
   super(context, name, factory, version);
  }

  //DB 처음 만들때 호출. - 테이블 생성 등의 초기 처리.
  @Override
  public void onCreate(SQLiteDatabase db) {
   db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT," +
     " name TEXT, age INTEGER);");
   result.append("\nperson 테이블 생성 완료.");
  }

  //DB 업그레이드 필요 시 호출. (version값에 따라 반응)
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   db.execSQL("DROP TABLE IF EXISTS person");
   onCreate(db);
  }
    }
}

 

 

앤드류이드 (6,190 포인트) 님이 2013년 4월 23일 질문

1개의 답변

0 추천
 
채택된 답변

DB 버전 올리시면 테이블을 재생성해줍니다.

아니라면 쿼리로 직접 칼럼 데이터 타입을 변경해야 하셔야 합니다.

 

 final static int dbVersion = 1; 

요거를 올려주시면 될거 같네요.

 

마플 (3,720 포인트) 님이 2013년 4월 23일 답변
앤드류이드님이 2013년 4월 24일 채택됨
...