【发布时间】:2014-11-30 10:03:54
【问题描述】:
我已经为经典的“我如何插入新记录或更新一个已存在的记录”找到了一些“将成为”解决方案,但我无法让其中任何一个解决用户在 android 中的选择
我有一张如下表:
mytable(Name text,Longitude double, Latitude double)
我想要做的是添加一个具有唯一名称的记录。如果名称已经存在,我希望用户选择修改字段或在 android 中忽略它。
谁能告诉我怎么做?
我的插入按钮代码:
public void insert(View v) {
final String nm = name.getText().toString();
final String longitude = ln.getText().toString();
final String latitude = lt.getText().toString();
// ln.setText("");
// lt.setText("");
// insert data into able
try {
Cursor c = db.rawQuery("select count(*) from mytable ", null);
if (c.getCount() > 0) {
c = db.rawQuery("select (*) from mytable where Name=" + nm, null);
if (c.getCount() > 0) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Confirm");
builder.setMessage("Record Already Exists Want to overwrite?");
builder.setPositiveButton("YES",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// Do nothing but close the dialog
ContentValues updatedValues = new ContentValues();
updatedValues.put("Longitude", longitude);
updatedValues.put("Latitude", latitude);
db.update("mytable", updatedValues, "Name="
+ nm, null);
Toast.makeText(getApplicationContext(),
"updated", Toast.LENGTH_LONG)
.show();
dialog.dismiss();
}
});
builder.setNegativeButton("NO",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// Do nothing
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
// Toast.makeText(this, "values updated successfully.",
// Toast.LENGTH_LONG).show();
/* record exist */
} else {
db.execSQL("insert into mytable values('" + nm + "','"
+ longitude + "','" + latitude + "')");
/* record not exist */
// display Toast
Toast.makeText(this, "values inserted successfully.",
Toast.LENGTH_LONG).show();
}
}
} catch (Exception e) {
db.execSQL("insert into mytable values('" + nm + "','" + longitude
+ "','" + latitude + "')");
/* record not exist */
// display Toast
Toast.makeText(this, "values inserted successfully.",
Toast.LENGTH_LONG).show();
}
}
当我插入具有相同名称的值时,它会被添加。但是我所做的是当用户输入已经存在的相同名称时,会发出警报来询问用户是要更新还是忽略。 如果他点击是,记录就会更新,如果不是,那么什么也不会发生......
【问题讨论】:
-
带有
query、insert或update。究竟是什么问题? -
邮政编码你到目前为止所做的事情。
-
@CL。当用户单击插入时,如果数据库有同名记录,则会形成警报以询问用户是否要更新或关闭。
-
@Neo 我已插入代码
-
看看我在下面发布的查询是否有帮助
标签: java android sqlite development-environment