【发布时间】:2017-02-25 01:59:07
【问题描述】:
我的代码正在创建一个 sqlite 表,该表在单击添加按钮时保存输入数据,我想要做的是每次单击按钮 NewTab 时都会创建一个新表,我到处搜索并我也尝试了 sharedpreferences 来制作不同的表格名称,这对我没有任何帮助,任何人都可以帮助 plz,谢谢。
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;
}
}
MainActivity
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();
}
}
}
);
【问题讨论】:
-
如果你想在每次按下按钮时创建一个新表,你应该运行一个查询来删除旧表,或者每次通过添加一个随机数给它一个新名称(您不能创建具有相同名称的新表)。我仍然不建议重新创建表,您可以从中擦除数据。
-
从您的问题中不清楚您为什么要创建一个新表。你能详细解释一下你想在这里完成什么吗?
-
感谢您的回复,我试图更改表的名称,但由于我第一次使用 sqlite,所以我没有让它正确。我不能放弃它,因为最后我需要检索所有表格。我的主要目标是在用户每次点击按钮时创建一个列表,然后他输入将保存在该列表中的数据,如待办事项列表应用程序
标签: android sqlite dynamic onclick