2017-10-08 9 views
0

Javaコーディング/ Androidアプリの開発にはまったく新しい機能です。私は、情報データを取り込んでSQLiteを使って管理するアプリを作ろうとしています。今、情報を追加しようとすると、何も入力されず、データベースを見ると「データが見つかりません」と表示されます。SQLiteデータベースに値を挿入できませんか?

これは私のDatabaseHelperのコードです:

public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "database.db"; 
    public static final String TABLE_NAME = "userinfo"; 
    public static final String COL_1 = "AGE"; 
    public static final String COL_2 = "SEX"; 
    public static final String COL_3 = "HEIGHT"; 
    public static final String COL_4 = "WEIGHT"; 
    public static final String COL_5 = "TYPE"; 
    public static final String COL_6 = "ACTIVITY"; 
    public String str = null; 

    public SQLiteDatabase database; 
    public DatabaseHelper db; 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL("create table " + TABLE_NAME + " (AGE INTEGER, SEX TEXT, HEIGHT INTEGER, WEIGHT INTEGER, TYPE INTEGER, ACTIVITY INTEGER)"); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(db); 
    } 

    public boolean insertData(Integer age, String sex) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_1, age); 
     contentValues.put(COL_2, sex); 
     long result = database.insert(TABLE_NAME, null, contentValues); 

     if(result == -1) 
      return false; 
     else 
      return true; 
    } 

    public boolean insertData2(Integer height, Integer weight, Integer type) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_3,height); 
     contentValues.put(COL_4,weight); 
     contentValues.put(COL_5,type); 
     long result = db.insert(TABLE_NAME, null, contentValues); 
     if(result == -1) 
      return false; 
     else 
      return true; 
    } 

    public boolean insertData3(Integer activity) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_6,activity); 
     long result = db.insert(TABLE_NAME, null, contentValues); 
     if(result == -1) 
      return false; 
     else 
      return true; 
    } 

    public Cursor getAllData() { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor res = db.rawQuery("select * from " + TABLE_NAME, null); 
     return res; 
    } 
} 

三つの異なる「InsertDataは、」データベースにデータを追加する必要がある3つのアクティビティのためのものです。それはそれを行う正しい方法ですか?また、最初の "InsertData"を呼び出すアクティビティもあります。

public class info1 extends AppCompatActivity { 

    DatabaseHelper myDb; 
    EditText editText13,editText14; 
    Button btnAddData; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_info1); 

     editText13 = (EditText)findViewById(R.id.editText13); 
     editText14 = (EditText)findViewById(R.id.editText14); 
     btnAddData = (Button)findViewById(R.id.button8); 
    } 

    public void AddData() { 
     btnAddData.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         boolean isInserted = myDb.insertData(Integer.parseInt(editText13.getText().toString()),editText14.getText().toString()); 
         if(isInserted == true) 
          Toast.makeText(info1.this, "Data Inserted",Toast.LENGTH_LONG).show(); 
         else 
          Toast.makeText(info1.this, "Data Not Inserted",Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
    } 

    public void NextPage2(View view) { 
     Intent i = new Intent(info1.this, info2.class); 
     startActivity(i); 
    } 
} 

ご協力いただければ幸いです。私は数時間それをしてきましたが、私は何を変更するか分からない...

+1

新しい行を追加します。あなたはそこに何が起こるか見るためにあなたのinsertメソッドにブレークポイントまたはログを入れていますか? – codeMagic

答えて

0

AddDataメソッドを呼び出すようには見えないので、onClickListenerは追加されません。行の後

 btnAddData = (Button)findViewById(R.id.button8); 

 AddData(); 
+0

これは間違いなく、ボタンがクリックされたときにアプリがクラッシュすると思いました。つまり、少なくともボタンのクリックは何かをしていることを意味し、固定する必要のあるコードに過ぎません。ありがとう、私は@codeMagicの提案に従ってログを追加し、それからそれを動作させることができるかどうかを確認します! –

関連する問題