ANDROID - 将数据插入数据库,报告无法启动活动ComponentInfo:java.lang.NullPointerException

时间:2012-04-01 13:02:39

标签: android mysql sql database

我一直坚持将assets文件夹中的数据(包含插入SQL)导入数据库。我尝试过很多改动但是我的补偿报告:

"Unable to start activity ComponentInfo{com.restaurant.sesame/com.restaurant.sesame.Food}:   java.lang.NullPointerException"

这是我的food.txt文件内容:

 INSERT INTO Food (name,detail,price)VALUES ('Cow Rib Steak', '1h 37m Shipping: $11.00', '11.00')
 INSERT INTO Food (name,detail,price)VALUES ('Cow Rib Steak', '1h 37m Shipping: $11.00', '11.00')
 INSERT INTO Food (name,detail,price)VALUES ('Cow Rib Steak', '1h 37m Shipping: $11.00', '11.00')
 INSERT INTO Food (name,detail,price)VALUES ('Cow Rib Steak', '1h 37m Shipping: $11.00', '11.00')

我已经挣扎了很长时间。我曾访问了很多网站来研究这个问题。 有人可以建议一个更坚实的方法来帮助我解决这个错误吗?

  public class Restaurant extends Activity {
public static final String KEY_ROWID = "_id";
public static final String KEY_NAME = "name";
public static final String KEY_DETAIL = "detail";
public static final String KEY_PRICE = "price";


private static final String DATABASE_NAME ="Restaurantdb";
private static final String DATABASE_TABLE ="Food";
private static final int DATABASE_VERSION = 1;


private SQLiteDatabase ourDatabase;
private final Context ourContext;
private DBHelper ourHelper;

InputStream input;
AssetManager assetManager = getAssets();
static String value;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    try {
           input = assetManager.open("food.txt");

                  int size = input.available();
                  byte[] buffer = new byte[size];
                  input.read(buffer);
                  input.close();

                  // byte buffer into a string
                   value = new String(buffer);


      } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }
}

private static class DBHelper extends SQLiteOpenHelper{

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

    }

    public void onCreate(SQLiteDatabase db)
    {
        db.execSQL("CREATE TABLE Food (" + KEY_ROWID +" INTEGER PRIMARY KEY AUTOINCREMENT, "
                    +KEY_NAME+" TEXT NOT NULL, "+KEY_DETAIL+ " TEXT NOT NULL, " + KEY_PRICE+ " DECIMAL (18,2) NOT NULL );"
                );
        db.execSQL("CREATE TABLE Bill ( _id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL,"+
                " price  DECIMAL (18,2) NOT NULL, quantity INTEGER NOT NULL, total DECIMAL (18,2) NOT NULL );"
            );



        db.rawQuery(value, null);

        Log.w("my app", "insert data into NEW DB");
    }

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找错误的尾巴:)

  

无法启动活动ComponentInfo

所以我建议问题可能出在这个活动onCreate()

---抱歉,我无法评论你的帖子:/