私のコードは、ボタンをクリックするたびに入力データを保存する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();
}
}
}
);
ボタンを押すたびに新しいテーブルを作成する場合は、古いテーブルを削除するクエリを実行し、毎回新しいテーブルを作成します。それに乱数を追加します(同じ名前の新しいテーブルを作成することはできません)。私はまだテーブルを再作成することをお勧めしません、あなたはそれからデータを拭くことができます。 –
あなたの質問から、なぜあなたは新しいテーブルを作成したいのかがはっきりしていません。ここであなたが達成しようとしていることを詳細に説明できますか? – Zartha
ありがとう、私はテーブルの名前を変更しようとしましたが、私はそれが私の初めてのsqliteを使用しているので、ライトを作っていませんでした。私は最終的に私はすべてのテーブルを取得する必要があるので、私はそれをドロップすることはできません。私の主な目標は、ユーザーがボタンをクリックするたびにリストを作成し、toDoリストアプリのようにそのリストに保存されるデータを入力することです – honeyyy