2016-10-15 30 views
2

私のコードは、ボタンをクリックするたびに入力データを保存するsqliteの1つのsqliteテーブルを作成しています。ボタンをクリックするたびにNewTab新しいテーブルが作成され、どこでも、私はsharedpreferencesを試してみました。テーブルの名前を変えてみましたが、何も助けてくれてありがとうございます。動的にsqliteテーブルを作成する

public class MyDBHandler extends SQLiteOpenHelper{ 
public static final String DATABASE_NAME = "Shopping.db"; 
public static final String TABLE_NAME = "Main_table"; 

public static final String COL_2 = "NAME"; 
public static final String COL_3 = "PRICE"; 

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

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT,PRICE TEXT)"); 
} 

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

public boolean insertData(String name,String price) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues contentValues = new ContentValues(); 
    contentValues.put(COL_2,name); 
    contentValues.put(COL_3,price); 
    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; 
} 

}

MainActivtyは

btnAddData.setOnClickListener(
       new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         MyDBHandler myDb = new MyDBHandler(MainActivity.this); 
         boolean isInserted = myDb.insertData(editName.getText().toString(), null); 
         if (isInserted == true) { 
          Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show(); 
          Cursor res = myDb.getAllData(); 

          while (res.moveToNext()) { 
           final TextView textView = new TextView(MainActivity.this); 

           String valor1 = "<p style='font-family:verdana'>" + a + "</p> "; 
           textView.setText(Html.fromHtml(valor1)); 
           lin.addView(textView); 



          } 


         } else { 
          Toast.makeText(MainActivity.this, "Data not Inserted", Toast.LENGTH_LONG).show(); 
         } 
        } 
       } 
     ); 
+0

ボタンを押すたびに新しいテーブルを作成する場合は、古いテーブルを削除するクエリを実行し、毎回新しいテーブルを作成します。それに乱数を追加します(同じ名前の新しいテーブルを作成することはできません)。私はまだテーブルを再作成することをお勧めしません、あなたはそれからデータを拭くことができます。 –

+0

あなたの質問から、なぜあなたは新しいテーブルを作成したいのかがはっきりしていません。ここであなたが達成しようとしていることを詳細に説明できますか? – Zartha

+0

ありがとう、私はテーブルの名前を変更しようとしましたが、私はそれが私の初めてのsqliteを使用しているので、ライトを作っていませんでした。私は最終的に私はすべてのテーブルを取得する必要があるので、私はそれをドロップすることはできません。私の主な目標は、ユーザーがボタンをクリックするたびにリストを作成し、toDoリストアプリのようにそのリストに保存されるデータを入力することです – honeyyy

答えて

0

uはsharedPreferences経由で保存変数を作成し、このウルtable count

SQLDATABASENAME.execSql("CREATE TABLE Table" + your_counter_variable_ + " #create rows here ;"); 
+0

私が言ったようなshareprefrencesを使用しましたが、ボタンをクリックしながら増分されるmainActivityでは、新しいデータベースを作成している間にこのvarを取得すると、エラーが発生しました。 – honeyyy

0

をその後、SQLデータベースを作成してから行うありますまた、アクチュアいつもudはすべてのテーブルに対して一意のIDを取得します

+0

私もそれを使用しましたが、データはインサートされていません。私はオンラインデータベースplzで私の目標を作ることができますか? – honeyyy

関連する問題