2017-05-25 2 views
-2

sqliteデータベースからデータを表示する際に問題が発生しました 実行時にエラーが表示されなくなりました。 私リストビューへのデータ表示でSQLITE DATABASEエラーが発生しました

DatabaseHelper.java

public class DatabaseHelper extends SQLiteOpenHelper { 

    public static final String DATABASE_NAME = "ExpDatee.db"; 
    public static final String TABLE_NAME = "EXPDATE_TABLE"; 
    public static final String COL_1 = "PRO_ID"; 
    public static final String COL_2 = "PRO_NAME"; 
    public static final String COL_3 = "PRO_EXPDATE"; 
    public static final String COL_4 = "PRO_DAYTILLEXP"; 

    /** 
    private static final String SQL_CREATE_TABLE_EXPDATE = "CREATE TABLE " + TABLE_NAME + "(" 
    + PRO_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
    + PRO_NAME + " TEXT NOT NULL, " 
    + PRO_EXPDATE+ " TEXT NOT NULL, " 
    + PRO_DAYTILLEXP + " TEXT NOT NULL, " 
    + ");"; 
    **/ 

    public DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, 1); 
     // SQLiteDatabase db = this.getWritableDatabase(); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     db.execSQL("CREATE TABLE " + TABLE_NAME + "(PRO_ID INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       "PRO_NAME TEXT, " + 
       "PRO_EXPDATE TEXT," + 
       " PRO_DAYTILLEXP TEXT)"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME); 
     onCreate(db); 
    } 


    //method to insert data 
    public boolean insertData(String PRO_NAME, String PRO_EXPDATE, String PRO_DAYTILLEXP) 
    { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(COL_2,PRO_NAME); 
     contentValues.put(COL_3,PRO_EXPDATE); 
     contentValues.put(COL_4,PRO_DAYTILLEXP); 

     Log.d(TAG, "ADD DATA : ADDING " + PRO_NAME + " TO " + TABLE_NAME); 
     Log.d(TAG, "ADD DATA : ADDING " + PRO_EXPDATE + " TO " + TABLE_NAME); 
     Log.d(TAG, "ADD DATA : ADDING " + PRO_DAYTILLEXP + " TO " + TABLE_NAME); 

     long result = db.insert(TABLE_NAME,null ,contentValues); 
     if (result == -1) 
      return false; 
     else 
      return true; 
    } 


    //get all data 
    public Cursor getData() 
    { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     String query = "SELECT * FROM" + TABLE_NAME; 
     Cursor data = db.rawQuery(query, null); 
     return data; 


    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    DatabaseHelper myDB; 
    EditText etProductName, etDaysBeforeExp, etExpDate; 
    Button btnAddItem, btnViewItem; 

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

     myDB = new DatabaseHelper(this); 
     etProductName = (EditText)findViewById(R.id.etProductName); 
     etDaysBeforeExp = (EditText)findViewById(R.id.etDaysBeforeExp); 
     etExpDate = (EditText)findViewById(R.id.etExpDate); 
     btnAddItem = (Button)findViewById(R.id.btnAddItem); 
     btnViewItem = (Button)findViewById(R.id.btnViewItem); 

     btnAddItem.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String PRO_NAME = etProductName.getText().toString(); 
       String PRO_EXPDATE = etExpDate.getText().toString(); 
       String PRO_DAYTILLEXP = etDaysBeforeExp.getText().toString(); 
       if(etProductName.length() !=0) 
       { 
        AddData(PRO_NAME,PRO_EXPDATE,PRO_DAYTILLEXP); 
        etProductName.setText(""); 
        etExpDate.setText(""); 
        etDaysBeforeExp.setText(""); 
       } 
       else 
       { 
        toastMessage("PLEASE INSERT VALUE"); 
       } 
      } 
     }); 


     btnViewItem.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this, ListDataActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 

    public void AddData(String PRO_NAME, String PRO_EXPDATE, String PRO_DAYTILLEXP) 
    { 
     boolean InsertData = myDB.insertData(PRO_NAME,PRO_EXPDATE,PRO_DAYTILLEXP); 
     if(InsertData) 
     { 
      toastMessage("DATA INSERTED"); 
     } 
     else 
     { 
      toastMessage("DATA NOT INSERTED"); 
     } 

    } 

    private void toastMessage(String message) { 
     Toast.makeText(this,message, Toast.LENGTH_LONG).show(); 
    } 

} 

を助けてくださいListDataActivity.java

public class ListDataActivity extends AppCompatActivity { 

    DatabaseHelper myDB; 
    private ListView mListView; 

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

     populateListView(); 
    } 

    private void populateListView() { 

     Cursor data = myDB.getData(); 
     ArrayList<String> listData = new ArrayList<>(); 
     while (data.moveToNext()) 
     { 
      listData.add(data.getString(1)); 
      listData.add(data.getString(2)); 
      listData.add(data.getString(3)); 

     } 
     ListAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, listData); 
     mListView.setAdapter(adapter); 
    } 


    private void toastMessage(String message) { 
     Toast.makeText(this,message, Toast.LENGTH_LONG).show(); 
    } 
} 
+0

初期化されることはありません。 – Piyush

+0

'ArrayAdapter'ではなく' populateListView'メソッド内で 'SimpleCursorAdapter'を使用します。 – pskink

答えて

0

初期化Listdataactivity

あなた `ListDataActivity`クラス` myDB`で
myDB = new DatabaseHelper(this); 

使用Arrayadapter

ArrayAdapter<String> itemsAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listData); 
mListView.setAdapter(adapter); 
+0

いいえ、' ArrayAdapter'を使用せず、データが 'Cursor'ベースの場合は' CursorAdapter'を使います(例えば 'SimpleCursorAdapter') – pskink

関連する問題