2017-09-02 23 views
1

アンドロイドスタジオでテーブルを作成しようとしていて、ADBツールに行ってSQLite3に行ったときにデータベースに入ることができますが、.tablesをコマンドラインに何も表示されません。ここに私のデータベースを作成するためのコードとそれはテーブルです。SQLiteで作成したテーブルが表示されません

public class DatabaseOperations extends SQLiteOpenHelper 
{ 
    public static final String NAME = "event_name"; 
    public static final String LOCATION = "event_location"; 
    public static final String DATE = "event_date"; 
    public static final String TIME = "event_time"; 

    public static final String DATABASE_NAME = "events_stuff.db"; 
    public static final String TABLE_NAME = "events"; 
    public static final int database_version = 7; 
    public String CREATE_QUERY = "CREATE TABLE " + TABLE_NAME+"(ID INTEGER PRIMARY KEY, "+ NAME + " TEXT," 
      + LOCATION + " TEXT,"+DATE+" TEXT,"+TIME+" TEXT);"; 

    public DatabaseOperations(Context context) 
    { 
     super(context, DATABASE_NAME, null, database_version); 
     Log.d("Database operations", "Database created"); 

    } 


    @Override 
    public void onCreate(SQLiteDatabase sdb) 
    { 
     sdb.execSQL(CREATE_QUERY); 
     Log.d("Database operations", "Table Created"); 
    } 

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

     ContentValues values = new ContentValues(); 
     values.put(NAME, e.get_eventname()); 
     values.put(LOCATION, e.get_eventloc()); 
     values.put(DATE, e.get_eventdate()); 
     values.put(TIME, e.get_eventdate()); 
     SQLiteDatabase db = this.getWritableDatabase(); 

     db.insert(TABLE_NAME, null, values); 
     db.close(); 
    } 
} 

その後、私のフラグメントに...私はこのようなテーブルに情報を挿入してみてください。

public static EditText eventName; 
public static EditText eventLoc; 
public static EditText eventDate; 
public static EditText eventTime; 
public static DatabaseOperations mDBHelper; 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
    mDBHelper = new DatabaseOperations(getActivity().getApplicationContext()); 
    mDBHelper.getWritableDatabase(); 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()) 
    { 
     case R.id.save: 
      newProduct(); 
      Toast.makeText(getActivity().getApplicationContext(), "YAY YOUR EVENT HAS INSERTED", Toast.LENGTH_LONG).show(); 
      return true; 
    } 
    return false; 
} 
public void newProduct() 
{ 
    DatabaseOperations dbHandler = new DatabaseOperations(getActivity().getApplicationContext()); 
    Events events = 
      new Events(eventName.getText().toString(), eventLoc.getText().toString(), eventDate.getText().toString(), eventTime.getText().toString()); 
    dbHandler.addProduct(events); 

} 

次のようにまた、私のイベントクラスが定義されています

public class Events 
{ 

    private int _id; 
    private String _eventname; 
    private String _eventloc; 
    private String _eventdate; 
    private String _eventtime; 

    public Events(){} 

    public Events(String _eventname, String _eventloc, String _eventdate, String _eventtime) 
    { 
     this._eventname = _eventname; 
     this._eventloc = _eventloc; 
     this._eventdate = _eventdate; 
     this._eventtime = _eventtime; 
    } 

    public void set_id(int _id) 
    { 
     this._id = _id; 
    } 

    public void set_eventname(String _eventname) 
    { 
     this._eventname = _eventname; 
    } 

    public void set_eventloc(String _eventloc) 
    { 
     this._eventloc = _eventloc; 
    } 

    public void set_eventdate(String _eventdate) 
    { 
     this._eventdate = _eventdate; 
    } 

    public void set_eventtime(String _eventtime) 
    { 
     this._eventtime = _eventtime; 
    } 

    public int get_id() 
    { 
     return _id; 
    } 

    public String get_eventname() 
    { 
     return _eventname; 
    } 

    public String get_eventloc() 
    { 
     return _eventloc; 
    } 

    public String get_eventdate() 
    { 
     return _eventdate; 
    } 

    public String get_eventtime() 
    { 
     return _eventtime; 
    } 


} 

私がしようとすると私のデータを挿入すると動作していると言われますが、コマンドラインに入ってもテーブルが表示されません。テーブルを作成するにはどうすればいいですか?既にテーブルが作成されていれば、その情報をどこで見ることができますか?私は多くのyoutubeのビデオとstackoverflowの投稿を梳き、それらのどれも働いていません。

ありがとうございます! ; newProduct()後フラグメント中

public Cursor getAllRows() { 
    SQLiteDatabase db = getWritableDatabase(); 
    return db.query(TABLE_NAME,null,null,null,null,null,null); 
} 

2) - :DatabaseOperationsで

+0

をコーディングする代わりに"Row=" + csr.getString(1)の方が良いでしょうか? – Peterdk

+0

私のテーブルが作成されたかどうかを確認するには....私はadbコマンドを入力しました:/sdcard/events_stuff.dbを入力してから:sqlite3 events_stuff.db –

+0

'public static EditText'ああ男の子、メモリリークが多い – EpicPandaForce

答えて

0

1)メソッドを追加します

Cursor csr = mDBHelper.getAllRows(); 
    Log.d("PRODUCTS","# of Rows=" + Integer.toString(csr.getCount()); 
    while (csr.moveToNext) { 
     Log.d("PRODUCTS", 
      "Row=" + csr.getString(1) 
     ); 
    } 
    csr.close(); 

ログに任意の場合、これは、各列の行の数、およびNAME(EVENT_NAME列)をリストすべきです。

データベースを参照するアクセスは、使用するデバイスによって制限される場合があります。データベースをコピーすることはできますが、表示されます。私が使用しているのはSQliteManagerです。これはブラウザの拡張機能です(他の同様の製品がありそうです)。

注:私は上記のテストをしていないので、奇妙なタイプミスがある可能性があります。また、簡潔にNAME/event_name列の索引/オフセットを使用しました。理想的には列名を使用してインデックスを取得します。あなたはコマンドラインで使うのです何のコマンド

"Row=" + csr.getString(csr.getColumnIndex(DatabaseOperations.NAME))

+0

ありがとうマイク!私はすぐにこれをテストします –

+0

これは完璧です! (csr.getString(ccsr.getColumnIndex ...)) –

+0

@UmdiBarram yep、例えば '... + csr.getString(csr)(あなたが投稿した最後のコードスニペットを出力します。 .getColumnIndex(DatabaseOperations.LOCATION)) '(これは' csr.getString(2) 'と同等です)。 0はID(* p.s。)です。CursorAdpaters(ListViewなど)に_id *という列が必要なため、IDではなく_idを使用すると有益です。 – MikeT

関連する問題