2011-02-15 1 views
0

나는 안드로이드 응용 프로그램에서 사용자가 입력해야하는 몇 가지 기능을 수행하고 있습니다 : 등록, 병원 찾기 위치 검색, 메시지 검색 (등록 된 사용자에게 SMS를 통해 전송), 약속을 예약하고 예약 할 수 있습니다. 지금까지 모든 활동이 완료되었지만이 데이터를 읽고 저장하기 위해 데이터베이스에 연결하는 방법을 알아야합니다. Android 2.1, MacOsX 및 SQLite firefox 확장을 사용하고 있습니다.안드로이드 2.1에 대한 질의와 데이터베이스에 삽입하는 안드로이드 응용 프로그램에 sqlite 데이터베이스 (sqlite firefox extension)를 연결하는 방법

이 코드는 sqllite db에 연결해야합니다. 무엇을 잘못하고 있습니까? 네트워크에 데이터베이스 (하다며 SQLite는) 연결할 수 있도록

package com.bitnuts.imom; 

import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DbManager extends SQLiteOpenHelper { 

    private static final String DB_NAME = "iMom.sqlite"; 
    private static final String DB_PATH = "/data/data/com.bitnuts.imom/databases/"; 
    private static final Integer DB_VERSION = 1; 
    private static final String TAG = "DbManager"; 
    private final Context context; 
    private SQLiteDatabase db; 
    private DbManager dbManager; 

    public DbManager(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
     this.context = context; 
    } 

    public DbManager open() { 
     dbManager = new DbManager(context); 
     db = dbManager.getWritableDatabase(); 
     return this; 

    } 

    @Override 
    public void onCreate(SQLiteDatabase arg0) {  


     createNewDatabase(); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { 
     // TODO Auto-generated method stub 

    } 

    public void createNewDatabase() { 
     InputStream assetsDB = null; 
     try { 
      assetsDB = context.getAssets().open(DB_NAME); 
      OutputStream dbOut = new FileOutputStream(DB_PATH + DB_NAME); 

      byte[] buffer = new byte[1024]; 
      int length; 
      while ((length = assetsDB.read(buffer)) > 0) { 
       dbOut.write(buffer, 0, length); 
      } 

      dbOut.flush(); 
      dbOut.close(); 
      assetsDB.close(); 
     } catch (IOException e) { 

     } 
    } 
} 

답변

2

안드로이드에는 JDBC 드라이버가 없습니다 : Android - Access to online Database SQlite

안드로이드는 임베디드 SQLite 데이터베이스와 함께 제공하지만, 이것은 단지 기기에서 사용할 수 있습니다 .

또한 why direct connection to databases from mobile devices is not recommended을 읽으십시오.

일부 데이터를 네트워크에 저장/공유해야하는 경우 일반적인 방법은 모든 장치가 연결할 수있는 서버에서 웹 서비스를 만드는 것입니다. 매우 대중적인 유형의 웹 서비스는 REST이며 java의 경우 quite easy to setup입니다.

+0

답장을 보내 주셔서 감사합니다. 나는 학생이고, 나는 이것을 안드로이드 에뮬레이터에서 돌리고있다. 아직 외부 서버에는 아무 것도 없습니다. 로컬 호스트의 데이터베이스와 상호 작용할 수 있으려면 여전히 REST 계층이 필요합니까 아니면 다른 방법이 있습니까? –

+0

Android에는 데이터베이스 드라이버가 없으므로 데이터베이스에 연결할 수 없습니다 (장치의 내장 데이터베이스 제외). 그래서, 네, 연결할 웹 서비스 레이어가 필요합니다. REST가 인기가 있습니다. –

0

나는 구현은 간단 많이되고, 안드로이드에 대한 사용 ORMLite을 제안한다. 여기에 getting started docs이 있습니다.

관련 문제