2011-02-15 15 views
0

我正在开发一个android应用程序,用户应该输入一些函数:register,locate hospital位置,搜索消息(通过短信发送给注册用户),并可以安排和预约。到目前为止,所有的活动都完成了,但是我需要知道如何连接到数据库才能读取和存储这些数据。我正在使用Android 2.1,MacOsX和SQLite firefox扩展。如何连接一个sqlite数据库(sqlite firefox扩展)到android应用程序,用于android 2.1来查询并插入到数据库

这是我必须连接到sqllite db的代码,我做错了什么?

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

有Android上没有JDBC驱动程序,以便您无法连接到网络上的数据库(SQLite的OT等):Android - Access to online Database SQlite

的Android自带的嵌入式SQLite数据库,但这只能在设备内。

另外,请阅读why direct connection to databases from mobile devices is not recommended

如果您需要在网络上存储/共享一些数据,那么通常的方法是在服务器上创建一个所有设备都可以连接的Web服务。一种非常受欢迎的Web服务类型是REST,它是java中的quite easy to setup

+0

感谢您的回答。我是一名学生,我在android模拟器上运行它。我还没有外部服务器上的任何东西。我还需要一个REST层才能够与本地主机上的数据库进行交互,还是有另一种方式? – 2011-02-15 08:40:02

+0

Android上没有数据库驱动程序,因此无法连接到数据库(设备上的嵌入式数据库除外)。所以,是的,您需要某种Web服务层来连接,REST更受欢迎。谢谢 – 2011-02-15 11:38:14

相关问题