Android 개발SQLite 사용법

SQLite 소개
SQLite 는 경량급,삽입 식,관계 형 데이터베이스 로 현재 아이 폰,안 드 로 이 드 등 휴대 전화 시스템 에서 사용 되 고 있 으 며 SQLite 는 이식 성 이 좋아 사용 하기 쉽 고 작고 효율 적 이 며 믿 을 만하 다.SQLite 는 하나의 프로 세 스 가 아 닌 같은 프로 세 스 공간 을 사용 합 니 다.외부 에서 볼 때 RDBMS 는 아니 지만 프로 세 스 내부 에 서 는 완전한 데이터베이스 엔진 입 니 다.
안 드 로 이 드 에서 SQLite 데이터 베 이 스 를 조작 해 야 할 때 SQLiteOpenHelper 대상 을 얻어 야 합 니 다.SQLiteOpenHelper 는 추상 적 인 유형 입 니 다.사용 자 는 이 종 류 를 계승 하고 이 유형의 방법 을 실현 해 야 합 니 다.
1.SQLiteOpenHelper 를 계승 한 후에 다음 과 같은 두 가지 방법 을 가지 게 되 었 습 니 다.
◆getReadable Database()에서 검색 데이터 베 이 스 를 만 들 거나 엽 니 다.
◆getWritable Database()작성 가능 한 데이터 베 이 스 를 만 들 거나 엽 니 다.
◆이들 은 모두 SQLiteDatabase 대상 으로 돌아 가 고 사용자 가 얻 은 SQLiteDatabase 대상 을 통 해 후속 작업 을 한다.
2.또한 사용 자 는 다음 과 같은 리 셋 함 수 를 덮어 쓰 고 데이터 베 이 스 를 조작 할 때 다음 과 같은 방법 으로 리 셋 할 수 있 습 니 다.
◆onCreate(SQLiteDatabase):데이터 베 이 스 를 처음 만 들 때 이 방법 을 사용 합 니 다.보통 이 방법 에서 데이터 베 이 스 를 만 듭 니 다.
◆onUpgrade(SQLiteDatabase,int,int):데이터 베 이 스 를 수정 해 야 할 때 안 드 로 이 드 시스템 은 이 방법 을 주동 적 으로 호출 합 니 다.일반적으로 우 리 는 이 방법 에서 데이터 베 이 스 를 삭제 하고 새로운 데이터 베 이 스 를 만 듭 니 다.물론 다른 조작 을 해 야 하 는 지 여 부 는 응용 프로그램의 수요 에 달 려 있 습 니 다.
◆onOpen(SQLiteDatabase):데이터 베 이 스 를 열 때 리 셋 함수 로 일반적으로 사용 되 지 않 는 다.
주의 가 필요 하 다
1.SQLiteOepnHelper 의 하위 클래스 에 다음 과 같은 구조 함수 가 있어 야 합 니 다.

  
  
  
  
  1. public DatabaseHelper(Context context, String name, CursorFactory factory,  
  2.    int version) {  
  3.   // super  
  4.   super(context, name, factory, version);  
  5. }  
  6.  

편 의 를 위해 다른 구조 함 수 를 만 들 수도 있 고 두 개의 매개 변수 나 세 개의 매개 변 수 를 포함 합 니 다.
2.함수 Public void onCreate(SQLiteDatabase db)는 getReadableDatabase()또는 getWritableDatabase()가 처음으로 데이터 베 이 스 를 만 들 었 을 때 실 행 됩 니 다.실제로 SQLiteDatabse 대상 을 처음 얻 었 을 때 이 방법 을 호출 합 니 다.

  
  
  
  
  1. public void onCreate(SQLiteDatabase db) {  
  2.   System.out.println("create a Database");  
  3.   //execSQL SQL  
  4.   db.execSQL("create table user(id int,name varchar(20))");  
  5. }  
  6.  

데이터베이스 테이블 에 기록 을 삽입 할 때,먼저 데 이 터 를 하나의 ContentValues 에 포함 시 키 고,이 대상 에 키 쌍 을 삽입 해 야 한다.그 중에서 키 는 열 이름 이 고,값 은 이 열 에 삽입 하고 자 하 는 값 이 며,값 은 데이터베이스 에 있 는 데이터 형식 과 일치 해 야 한다.이 어 Databasehelper 의 getWritable Database 방법 을 호출 하여 기록 할 수 있 는 Databasehelper 대상 을 얻 은 다음 insert 에 기록 합 니 다.DatabaseHelper 대상 의 insert,update 또는 query 방법 을 호출 하 는 매개 변수 전달 에 주의 하 십시오.
또한 query 방법 을 실행 한 후 되 돌아 오 는 것 은 Cursor 커서 입 니 다.커서 는 처음에 집합 에서 첫 줄 의 이전 줄 을 기록 하 는 것 을 가리 키 기 때문에 먼저 cursor.next()를 호출 하여 커서 를 집합 을 기록 하 는 첫 줄 로 이동 시 킨 다음 데 이 터 를 가 져 오 면 됩 니 다.
자바 코드

  
  
  
  
  1.     public class SQLiteActivity extends Activity {    
  2.     /** Called when the activity is first created. */     
  3.     private Button createButton;      
  4.     private Button insertButton;      
  5.     private Button updateButton;      
  6.     private Button updateRecordButton;        
  7.     private Button queryButton;       
  8.     @Override     
  9.     public void onCreate(Bundle savedInstanceState) {     
  10.         super.onCreate(savedInstanceState);       
  11.         setContentView(R.layout.main);        
  12.         createButton = (Button)findViewById(R.id.createDatabase);     
  13.         updateButton = (Button)findViewById(R.id.updateDatabase);     
  14.         insertButton = (Button)findViewById(R.id.insert);     
  15.         updateRecordButton = (Button)findViewById(R.id.update);       
  16.         queryButton = (Button)findViewById(R.id.query);       
  17.         createButton.setOnClickListener(new CreateListener());        
  18.         updateButton.setOnClickListener(new UpdateListener());        
  19.         insertButton.setOnClickListener(new InsertListener());        
  20.         updateRecordButton.setOnClickListener(new UpdateRecordListener());        
  21.         queryButton.setOnClickListener(new QueryListener());      
  22.     }     
  23.     class CreateListener implements OnClickListener{      
  24.         @Override     
  25.         public void onClick(View v) {     
  26.             // DatabaseHelper         
  27.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");     
  28.             // DatabaseHelper getReadableDatabase() , getWritableDatabase() , ,         
  29.             SQLiteDatabase db = dbHelper.getReadableDatabase();       
  30.         }     
  31.     }     
  32.     class UpdateListener implements OnClickListener{      
  33.       
  34.         @Override     
  35.         public void onClick(View v) {     
  36.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);       
  37.             SQLiteDatabase db = dbHelper.getReadableDatabase();       
  38.         }     
  39.               
  40.     }     
  41.     class InsertListener implements OnClickListener{      
  42.       
  43.         @Override     
  44.         public void onClick(View v) {     
  45.             // ContentValues        
  46.             ContentValues values = new ContentValues();       
  47.             // , , ,         
  48.             values.put("id", 1);      
  49.             values.put("name","zhangsan");        
  50.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db",2);       
  51.             SQLiteDatabase db = dbHelper.getWritableDatabase();       
  52.             // insert ,        
  53.             db.insert("user", null, values);      
  54.         }     
  55.     }     
  56.     // SQL update       
  57.     //UPDATE table_name SET XXCOL=XXX WHERE XXXXCOL=XX...       
  58.     class UpdateRecordListener implements OnClickListener{        
  59.       
  60.         @Override     
  61.         public void onClick(View arg0) {      
  62.             // TODO Auto-generated method stub        
  63.             // SQLiteDatabase      
  64.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");     
  65.             SQLiteDatabase db = dbHelper.getWritableDatabase();       
  66.             ContentValues values = new ContentValues();       
  67.             values.put("name", "zhangsanfeng");       
  68.             //         
  69.             // ContentValeus      
  70.             // where        
  71.             db.update("user", values, "id=?", new String[]{"1"});     
  72.         }     
  73.     }     
  74.     class QueryListener implements OnClickListener{       
  75.       
  76.         @Override     
  77.         public void onClick(View v) {     
  78.             System.out.println("aaa------------------");      
  79.             Log.d("myDebug", "myFirstDebugMsg");      
  80.                   
  81.             DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db");     
  82.             SQLiteDatabase db = dbHelper.getReadableDatabase();       
  83.             Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);     
  84.             while(cursor.moveToNext()){       
  85.                 String name = cursor.getString(cursor.getColumnIndex("name"));        
  86.                 System.out.println("query--->" + name);       
  87.             }     
  88.         }     
  89.     }     
  90.           
  91. }   

Android SQLite

Android SQLite ! 。 Android SQLite , 。

SQLite !

data/data/< >/databases/

1:Android SQLite


    
    
    
    
  1. Context.createDatabase(String name,int version ,
    int mode,CursorFactory factory) 
생 성 에 성공 하지 못 하면 FileNotFound Exception 이상 던 지기
자바 코드

    
    
    
    
  1. SQLiteDatabase DataBase=this.openOrCreateDatabase
    ("DataBase.db",   
  2. MODE_PRIVATE,   
  3. new CursorFactory(){   
  4. // , Database, MODE_PRIVATE   
  5. public Cursor newCursor(SQLiteDatabase db,   
  6. SQLiteCursorDriver masterQuery,   
  7. String editTable,   
  8. SQLiteQuery query){   
  9. return null;   
  10. }   
  11. });   
  12. SQLiteDatabase DataBase=this.openOrCreateDatabase
    ("DataBase.db",  
  13. MODE_PRIVATE,   
  14. new CursorFactory(){  
  15. // , Database, MODE_PRIVATE  
  16. public Cursor newCursor(SQLiteDatabase db,  
  17. SQLiteCursorDriver masterQuery,   
  18. String editTable,  
  19. SQLiteQuery query){  
  20. return null;  
  21. }  
  22. }); 
2:Android SQLite 데이터베이스 에 존재 하 는 데이터베이스 열기

    
    
    
    
  1. Context.openDatabase(String file,CursorFactory factory); 
존재 하지 않 는 데이터 베 이 스 를 열 려 면 코드 는 다음 과 같 습 니 다.
자바 코드

    
    
    
    
  1. // :DataBase , .db   
  2. SQLiteDatabase DataBase=this.openOrCreateDatabase
    ("DateBase.db",   
  3. MODE_PRIVATE,   
  4. null);   
  5. //    
  6. try   
  7. {   
  8. //    
  9. db = this.openDatabase("DateBase.db", null);   
  10. }   
  11. catch (FileNotFoundException e)   
  12. {   
  13. try   
  14. {   
  15. //    
  16. }   
  17. catch (FileNotFoundException e)   
  18. {   
  19. db = null;   
  20. }   
  21. }   
  22. // :DataBase , .db  
  23. SQLiteDatabase DataBase=this.openOrCreateDatabase
    ("DateBase.db",  
  24. MODE_PRIVATE,   
  25. null);  
  26. //  
  27. try   
  28. {   
  29. //    
  30. db = this.openDatabase("DateBase.db", null);   
  31. }   
  32. catch (FileNotFoundException e)   
  33. {   
  34. try   
  35. {   
  36. //    
  37. }   
  38. catch (FileNotFoundException e)   
  39. {   
  40. db = null;   
  41. }   
3:Android SQLite 데이터베이스 닫 기 데이터베이스

    
    
    
    
  1. Java    
  2. //    
  3. DataBase.close();   
  4. //  
  5. DataBase.close(); 
4:Android SQLite 데이터베이스 에서 지정 한 데이터베이스 삭제
자바 코드

    
    
    
    
  1. this.deleteDatabase("Database.db");   
  2. this.deleteDatabase("Database.db"); 
5:Android SQLite 데이터베이스 에서 SQL 명령 을 실행 합 니 다.

    
    
    
    
  1. SQLiteDatabase.execSQL(String sql); 

좋은 웹페이지 즐겨찾기