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

안드로이드 생초보자 DB연동좀 도와주세요 !!

0 추천

 

public class MainActivity2 extends Activity {
 
 
    ListView lv = (ListView)findViewById(R.id.list_list);
    
    DBAdapter db = new DBAdapter(this, DBAdapter.SQL_CREATE_MEMBER, "member");
    
    db.open();
    String columns[] = {"name", "addr", "year"};
    Cursor cursor = db.selectTable(columns, null, null, null, null, null);
    
    ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
    
    if(cursor.moveToFirst()) {
     do{
      HashMap<String,String> map = new HashMap<String,String>();
      map.put("name", cursor.getString(0));
      map.put("addr", cursor.getString(1));
      map.put("year", cursor.getString(2));
      list.add(map);
     }while(cursor.moveToNext());
    }
    
    SimpleAdapter sap = new SimpleAdapter(this, list, android.R.layout.simple_list_item_2, new String[] {"name", "addr", "year"}, new int[] {android.R.id.text1, android.R.id.text2, android.R.id.text2});
    lv.setAdapter(sap);
 
    db.close();
}
 
}
 
DB 어뎁터 
 
// DBMS를 도와주는 util클래스로 가정
public class DBAdapter {
 private DatabaseHelper mHelper;
 private SQLiteDatabase mDb;
 
 private static final String DATABASE_NAME = "memberdb";
 private static final int DATABASE_VERSION = 1;
 private static String SQL_TABLE_CREATE;
 private static String TABLE_NAME;
 
 // 여러 테이블을 이용할 경우 아래처럼 테이블을 생성하기 위한 sql만 담아서 범용적으로
 // DBAdapter 클래스를 사용하는게 좋다.
 public static final String SQL_CREATE_MEMBER = 
  "create table member (no integer primary key autoincrement,"
  + " name text not null,"
  + " addr text not null,"
  + " year text not null"
  + ")";
 
 private final Context mCxt;
 
 // DB를 open, update, drop 시키는 역할의 클래스
 private static class DatabaseHelper extends SQLiteOpenHelper {
 
  public DatabaseHelper(Context context) {
   super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }
 
  public DatabaseHelper(Context context, String name,
    CursorFactory factory, int version) {
   super(context, name, factory, version);
   // TODO Auto-generated constructor stub
  }
 
  @Override
  public void onCreate(SQLiteDatabase db) {
   // TODO Auto-generated method stub
   db.execSQL(SQL_TABLE_CREATE);
  }
 
  @Override
  public void onOpen(SQLiteDatabase db) {
   // TODO Auto-generated method stub
   super.onOpen(db);
  }
 
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
   // TODO Auto-generated method stub
   db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
   onCreate(db);
  }
 }
 
 // DBAdapter를 이용하고자 하는 곳에서 생성자에 table 생성 sql과 table명만 주고 이용해라.
 public DBAdapter(Context cxt, String sql, String tableName) {
  this.mCxt = cxt;
  SQL_TABLE_CREATE = sql;
  TABLE_NAME = tableName;
 }
 
 public DBAdapter open() throws SQLException {
  // 외부에서 db를 사용하겠다고 요청이 들어오면 Helper를 이용해서 db를 open하고
  // 자신의 클래스를 리턴
  mHelper = new DatabaseHelper(mCxt);
  mDb = mHelper.getWritableDatabase();
  return this;
 }
 
 public void close() {
  mHelper.close();
 }
 
 public long insertTable(ContentValues values) {
  return mDb.insert(TABLE_NAME, null, values);
 }
 
 public boolean deleteTable(String pkColumn, long pkData) {
  return mDb.delete(TABLE_NAME, pkColumn + "=" + pkData, null) > 0;
 }
 
 public Cursor selectTable(String[] columns, String selection, 
   String[] selectionArgs, String groupBy,
   String having, String orderBy) {
  return mDb.query(TABLE_NAME, columns, selection, selectionArgs, groupBy, having, orderBy);
 }
 
 public boolean updateTable(ContentValues values, String pkColumn, long pkData) {
  return mDb.update(TABLE_NAME, values, pkColumn + "=" + pkData, null) > 0;
 }
}

ㄹ

에러는 이렇게 뜨구요 ..소스 가져와서  수정하면서 공부하고 있는데요 ..

 SimpleAdapter sap = new SimpleAdapter(this, list, android.R.layout.simple_list_item_2, new String[] {"name", "addr", "year"}, new int[] {android.R.id.text1, android.R.id.text2, android.R.id.text2});
    lv.setAdapter(sap);
 
제가 볼땐 여기서 저 빨간색 소스가 좀 이상한거 같은데 .. 어떻게 수정해야 할지 구글링해봐도 안나오고 ...휴ㅠㅠ..
 
원래 소스는 2개의 값입력후 버튼누르면 다음페이지에 리스트뷰로 출력하는건데요 ..
제가 3개로 바꿔보려고 수정하는 과정에서 에러가 뜹니다.. 저렇게 .. 어디가 문제일까요 ..?
 
그리고 리스트뷰  하나에 두줄이 들어가는데요 ! 첫줄에 값1 넣고, 둘쨋줄에 값2+3 넣으려는데 어딜 만져야 할까요 ?!
 
부탁드립니다!!  힌트좀 주세요 !!!!
 
땡호 (160 포인트) 님이 2014년 10월 20일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...