私はSQLiteデータベースにデータを挿入しようとしていますが、何らかの理由でアプリがクラッシュしていますが、何もわかりません。私はちょうど "データベースとテーブルを作成する方法、データを挿入する方法(それはそう思わない)"私のラップトップでアプリを実行することはできませんクラッシュの原因については、Androidスタジオは何を言ってください「Android Simulator」の助けを借りて呼び出されます。以下はsqliteデータベースにデータを挿入する際にエラーが発生しました。アプリケーションが常にクラッシュする
DatabaseHelperの私のコードはSQLiteOpenHelper
package com.famiddle.genius.businessmanager;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
// DECLARING NAME FOR THE DATABASE AND THE TABLE
public static final String DATABASE_NAME = "imported_items";
public static final String TABLE_NAME = "stock";
// DECLARING NAME FOR THE COLUMNS
public static final String COL_1 = "ID";
public static final String COL_2 = "ITEMS_NAME";
public static final String COL_3 = "QUANTITY";
public static final String COL_4 = "COST";
public static final String COL_5 = "TOTAL_COST";
// DEFAULT CONSTRUCTOR
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
// IT CREATES TABLE
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, ITEMS_NAME TEXT, QUANTITY INTEGER, COST INTEGER, TOTAL_COST INTEGER");
}
// IT DROPS TABLE, IF IT ALREADY EXISTS
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db); //I DON'T KNOW WHY IT IS HERE, PLEASE TELL ME MORE ABOUT
// IT IN COMMENTS
}
// IT INSERTS DATA OR VALUES IN TABLE
public boolean insertData(String itemsName, int quantity, int cost, int totalCost) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2, itemsName);
contentValues.put(COL_3, quantity);
contentValues.put(COL_4, cost);
contentValues.put(COL_5, totalCost);
long result = db.insert(TABLE_NAME, null, contentValues);
//db.close();
if (result == -1){
return false;
}else {return true;}
// return result != -1;
}
}
を拡張し、これはデータベース・インスタンスが と呼ばれ、
public class Stock extends Fragment {
DatabaseHelper dataBase;
ArrayList<String> items;
SharedPreferences prefs;
SharedPreferences.Editor editor;
public Stock() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.stock, container, false);
prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
editor = prefs.edit();
if(prefs.getBoolean("has_not_created?", true)) {
// INITIALIZING ARRAY LIST THAT CONTAINS ITEMS NAME
items = new ArrayList<>();
items.add("One");
items.add("Two");
items.add("Three");
items.add("Four");
items.add("Five");
items.add("Six");
// INITIALIZING DATABASE
dataBase = new DatabaseHelper(getContext());
// CREATING A LOOP FOR INSERTING ITEMS NAMES ONE BY ONE
for (int i = 0; i < items.size(); i++) {
Boolean isInserted = dataBase.insertData(items.get(i), 0, 0, 0);
Toast.makeText(getActivity(), items.get(i) + " has been inserted into database" + isInserted , Toast.LENGTH_SHORT).show();
}
// PUTTING 'FALSE' IN SHARED PREFERENCE OBJECT
// THEN IT WILL NOT ALLOW THE CODE TO RUN
editor.putBoolean("has_not_created?", false);
editor.apply();
}
を使用している株式のフラグメントのためのコードである誰かが私に教えてくださいすることができています私のコードに何が問題なの?私はAndroidのチュートリアルからそれを学んだ。
クラッシュログを投稿してください。 – Henry
アンドロイドシミュレータの助けを借りてノートパソコンでアプリを実行できません。 –
シミュレータまたは実際のデバイスでapを実行しても、ログカットビューにログが表示されます – shravani