这是提供用户输入的主活动
public class Welcome extends AppCompatActivity{
private DBMANAGER_person dbmanager_person;
private ListView listView;
private SimpleCursorAdapter adapter;
final String [] from = new String[]{MyDB.COLUMN_ID, MyDB.COLUMN_NAME, MyDB.COLUMN_AGE, MyDB.COLUMN_HEIGHT , MyDB.COLUMN_WEIGHT};
final int [] to = new int[]{R.id.nameTV,R.id.ageTV,R.id.heightTV,R.id.weightTV};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
dbmanager_person = new DBMANAGER_person(this);
dbmanager_person.open();
Cursor cursor = dbmanager_person.fetch();
listView = (ListView) findViewById(R.id.list_view);
listView.setEmptyView(findViewById(R.id.emptyTV));
adapter = new SimpleCursorAdapter(this, R.layout.person, cursor, from, to,0);
adapter.notifyDataSetChanged();
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView idTextView = (TextView)view.findViewById(R.id.idTV);
TextView nameTextView = (TextView) view.findViewById(R.id.nameTV);
TextView ageTextView = (TextView) view.findViewById(R.id.ageTV);
TextView heightTextView = (TextView) view.findViewById(R.id.heightTV);
TextView weightTextView = (TextView) view.findViewById(R.id.weightTV);
String iD = idTextView.getText().toString();
String name = nameTextView.getText().toString();
String age = ageTextView.getText().toString();
String height = heightTextView.getText().toString();
String weight = weightTextView.getText().toString();
Intent intent = new Intent(getApplicationContext(), Modiffy_person_Details.class);
intent.putExtra("_id",iD);
intent.putExtra("name", name);
intent.putExtra("age", age);
intent.putExtra("height", height);
intent.putExtra("weight", weight);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.add_person,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.add){
Intent intent = new Intent(this,Add_people.class);
startActivity(intent);
}else if (id == R.id.logout){
Intent backToHome = new Intent(this,MainActivity.class);
startActivity(backToHome);
}
return super.onOptionsItemSelected(item);
}
}
这是Add_prople类
公共类Add_people扩展AppCompatActivity实现视图。OnClickListener{private EditText name EditText;private EditText ageEditText;private EditText heightEditText;private EditText weightededittext;
private Button save;
private DBMANAGER_person dbmanager_person;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Add People");
setContentView(R.layout.activity_add_people);
nameEditText = (EditText)findViewById(R.id.nameET);
ageEditText = (EditText)findViewById(R.id.ageET);
heightEditText = (EditText)findViewById(R.id.heightET);
weightEditText = (EditText)findViewById(R.id.weightET);
save = (Button)findViewById(R.id.saveBtn);
dbmanager_person = new DBMANAGER_person(this);
dbmanager_person.open();
save.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.saveBtn:
final String name = nameEditText.getText().toString();
final String age = ageEditText.getText().toString();
final String height = heightEditText.getText().toString();
final String weight = weightEditText.getText().toString();
dbmanager_person.insert(name,age,height,weight);
Intent main = new Intent(this,Welcome.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(main);
break;
}
}
}
这是DBMANAGER_person类,CRUD操作在其中工作
这是Modiffy_person_Details类,用户可以更新和删除他们的信息
public class DBMANAGER_person {
private SQLiteDatabase database;
private MyDB myDB;
private Context context;
public DBMANAGER_person(Context context) {
this.context = context;
}
public DBMANAGER_person open() throws SQLiteException{
myDB = new MyDB(context);
database = myDB.getWritableDatabase();
return this;
}
public void close(){
myDB.close();
}
public void insert(String name,String age,String height,String weight){
ContentValues contentValues = new ContentValues();
contentValues.put(MyDB.COLUMN_NAME,name);
contentValues.put(MyDB.COLUMN_AGE,age);
contentValues.put(MyDB.COLUMN_HEIGHT,height);
contentValues.put(MyDB.COLUMN_WEIGHT,weight);
database.insert(MyDB.TABLE_NAME,null,contentValues);
}
public Cursor fetch(){
String[] columns = new String[]{MyDB.COLUMN_ID, MyDB.COLUMN_NAME, MyDB.COLUMN_AGE , MyDB.COLUMN_HEIGHT, MyDB.COLUMN_WEIGHT};
Cursor cursor = database.rawQuery( "select rowid _id,* from "+MyDB.TABLE_NAME, null);
cursor.moveToFirst();
return cursor;
}
public int update(long id, String name, String age, String height, String weight){
ContentValues contentValues = new ContentValues();
contentValues.put(MyDB.COLUMN_NAME,name);
contentValues.put(MyDB.COLUMN_AGE,age);
contentValues.put(MyDB.COLUMN_HEIGHT,height);
contentValues.put(MyDB.COLUMN_WEIGHT,weight);
int i = database.update(MyDB.TABLE_NAME,contentValues,MyDB.COLUMN_ID + " = "+id,null);
return i;
}
public void delete(long id){
database.delete(MyDB.TABLE_NAME, MyDB.COLUMN_ID + "="+ id,null);
}
}
公共类Modify_person_详细信息扩展了AppCompative实现视图。OnClickListener{private EditText Name字段;private EditText ageField;private EditText heightField;private EditText weightField;
private Button update;
private Button delete;
private long _id;
private DBMANAGER_person dbmanager_person;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Modify Record");
setContentView(R.layout.activity_modiffy_person__details);
dbmanager_person = new DBMANAGER_person(this);
dbmanager_person.open();
nameField = (EditText)findViewById(R.id.nameEditText);
ageField = (EditText)findViewById(R.id.ageEditText);
heightField = (EditText)findViewById(R.id.heightEditText);
weightField = (EditText)findViewById(R.id.weightEditText);
update = (Button)findViewById(R.id.update_btn);
delete = (Button)findViewById(R.id.delete_btn);
Intent intent = getIntent();
String ID = intent.getStringExtra("_id");
String name = intent.getStringExtra("name");
String age = intent.getStringExtra("age");
String height = intent.getStringExtra("height");
String weight = intent.getStringExtra("weight");
String check_ID = ID;
if(!check_ID.equals("")) {
_id = Long.parseLong(ID);
}/*else{
Toast.makeText(getApplicationContext(),"There is no id",Toast.LENGTH_LONG).show();
}*/
nameField.setText(name);
ageField.setText(age);
heightField.setText(height);
weightField.setText(weight);
update.setOnClickListener(this);
delete.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.update_btn:
String na = nameField.getText().toString();
String ag = ageField.getText().toString();
String hei = heightField.getText().toString();
String wei = weightField.getText().toString();
dbmanager_person.update( _id , na , ag,hei,wei);
this.returnHome();
break;
case R.id.delete_btn:
dbmanager_person.delete(_id);
this.returnHome();
break;
}
}
public void returnHome(){
Intent home_intent = new Intent(getApplicationContext(),Welcome.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(home_intent);
}
}
我的问题是,每当我想更新或删除我的信息时,它都不起作用。
检查delete和update的返回值。对于这两个函数,如果没有受影响的行,则返回0;如果有受影响的行,则返回1。如果是0,那么您的问题是处理SQL查询本身,在这种情况下,首先要检查ID的有效性。
更新
删除
利用UPDATE和DELETE语句进行操作表数据。 更新数据 UPDATE用来更新修改表中的数据 更新表中特定的行 更新表中所有行 注意: 如果省略了WHERE子句,就会更新所有行。 UPDATE语句有三个部分组合 要更新的表 列名和他们的新值 确定要更新哪些行的过滤条件 mysql> UPDATE Customers -> SET cust_email = '[email protect
问题内容: 我正在使用()查找PostLikes表中的(PostId,UserId),如果找到该行,则用于生成delete指令并删除基础行,如果未找到该行,则用于生成insert命令并使用将该行插入表中。但是该行未插入数据库中的表中。这是我到目前为止所做的 和表 PostLikes(LikeId,PostId,UserId) 问题答案: 有几个问题: 您正在寻找重复使用相同的命令,这两个检测行是否
我想知道ehcache是否有办法检测数据库更新/插入(spring/java,hibernate web应用程序),并使用数据库中的当前(最新)数据刷新其缓存。如果没有,检测数据库更新的最佳方法是什么,以保持与缓存和数据库之间的数据同步?
我目前正在重构遗留代码,以使用Android架构组件,并在一种存储库模式中设置一个房间数据库和截取请求。因此,表示层/域层要求存储库获取LiveData对象进行观察,或告诉他与服务器同步,然后删除旧的db条目,并从服务器中重新提取所有当前条目。 我已经写了同步部分的测试,所以我确信,对象被正确地获取并插入到数据库中。但是当写一个测试来观察db表的条目时(并测试对象是否被正确保存,以及在将它们放入d
我正在使用带有wpf和Entity框架的mvvm模式,并在视图模型和模型中实现了INotifyProperty tyChanged 我使用带有3个文本框控件的多绑定,第一个文本框用于输入名字,第二个文本框用于姓氏 第三个文本框表示全名 使用多重绑定的第三个文本框: 这是我的转换器 这可以完美地工作并将FirstName和LastName保存到数据库,但不会将FullName保存到具有多绑定的数据库
因此,我使用LiveData和ViewModel设置获取和插入数据的功能,并使用Room数据库保存数据。 将数据插入数据库后,我的RecyclerView不会更新数据。 RecyclerAdapterTransaksi.kt 使用RecyclerView显示数据库数据的片段 Pemasukkanframent。kt 使用LiveData的ViewModel类 TransaksiViewModel.