我一直坚持将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");
}
答案 0 :(得分:0)
我认为你正在寻找错误的尾巴:)
无法启动活动ComponentInfo
所以我建议问题可能出在这个活动onCreate()
上---抱歉,我无法评论你的帖子:/