Я не могу удалить некоторые данные из моей таблицы в базе данных.
Я скопировал код SQLite и вставил его в свой новый проект.Это довольно просто.Я исправляю некоторый код, и он не работает.
Я трачу много времени на решение этой проблемы, но не могу это сделать.
Даже без ошибок произошло.
За исключением запроса на удаление, все остальные запросы работают довольно хорошо.
Это основано на Android и Java.
Я пытался удалить данные, используя этизапросов.
db.execSQL("DELETE FROM mca WHERE position=" + position + ";");
db.execSQL("DELETE FROM mca WHERE _id=" + id + ";");
db.execSQL("DELETE FROM mca WHERE member='" + member + "';");
Я сделал _id, позиция и член имеют одинаковое значение.Так что эти коды имеют смысл.
_id и position - INTEGER, а member - TEXT.
Это MainActivity.java
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
MyRecyclerViewAdapter adapter;
MemberData md;
@Override
protected void onCreate(Bundle savedInstanstState) {
super.onCreate(savedInstanstState);
setContentView(R.layout.activity_main);
final DBHelper dbHelper = new DBHelper(getApplicationContext(), "test_alarm.db", null, 1);
ArrayList<MemberData> member;
member = new ArrayList<>();
for (int i = 1; i < 5; i++) {
try {
md = new MemberData(member.get(member.size() - 1).position + 1, i + "");
}catch(Exception e){
Log.d("error", e+"");
md = new MemberData(1, i+"");
}
member.add(md);
dbHelper.insert(md);
}
/*************** activate delete command ***************/
dbHelper.delete(2);
/*******************************************************/
// set up the RecyclerView
recyclerView = findViewById(R.id.my_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new MyRecyclerViewAdapter(this, member, dbHelper);
recyclerView.setAdapter(adapter);
}
}
class MemberData {
public int position;
public String member;
public MemberData(int position, String member) {
this.member = member;
this.position = position;
}
}
Это функция SQLite
public class DBHelper extends SQLiteOpenHelper {
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE mca (_id INTEGER PRIMARY KEY AUTOINCREMENT, member TEXT, position INTEGER);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public void insert(MemberData md) {
SQLiteDatabase db = getWritableDatabase();
db.execSQL("INSERT INTO mca VALUES(null, '" + md.member + "', " + md.position + ");");
db.close();
}
public void delete(int position) {
SQLiteDatabase db = getWritableDatabase();
/********************* Delete query *******************/
db.execSQL("DELETE FROM mca WHERE position=" + position + ";");
/*******************************************************/
db.close();
}
public ArrayList<MemberData> getData() {
SQLiteDatabase db = getReadableDatabase();
ArrayList<MemberData> memberList = new ArrayList<>();
Cursor cursor = db.rawQuery("SELECT * FROM mca", null);
while (cursor.moveToNext()) {
memberList.add(new MemberData(cursor.getInt(1), cursor.getString(2)));
}
return memberList;
}
}
Это адаптер для RecyclerView.
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
private ArrayList<MemberData> mData;
private LayoutInflater mInflater;
private ItemClickListener mClickListener;
private DBHelper db;
// stores and recycles views as they are scrolled off screen
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView myTextView;
public ViewHolder(View itemView) {
super(itemView);
myTextView = itemView.findViewById(R.id.textView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
}
}
// data is passed into the constructor
MyRecyclerViewAdapter(Context context, ArrayList<MemberData> data, DBHelper db) {
this.mInflater = LayoutInflater.from(context);
this.mData = data;
this.db = db;
}
// inflates the row layout from xml when needed
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.my_text_view, parent, false);
return new ViewHolder(view);
}
// binds the data to the TextView in each row
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String member = "member"+mData.get(position).member;
holder.myTextView.setText(member);
}
// total number of rows
@Override
public int getItemCount() {
return mData.size();
}
// convenience method for getting data at click position
String getItem(int id) {
return mData.get(id).member;
}
// allows clicks events to be caught
void setClickListener(ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
}
Я просто хочу удалить определенное значение из таблицы