Java 如果不存在,则在用户';s选择android
我已经找到了一些经典的“如何插入新记录或更新现有记录”的“可能”解决方案,但我无法让它们中的任何一个在android中根据用户的选择工作 我的表格如下:Java 如果不存在,则在用户';s选择android,java,android,sqlite,development-environment,Java,Android,Sqlite,Development Environment,我已经找到了一些经典的“如何插入新记录或更新现有记录”的“可能”解决方案,但我无法让它们中的任何一个在android中根据用户的选择工作 我的表格如下: mytable(名称文本、经度双精度、纬度双精度) 我要做的是添加一个具有唯一名称的记录。如果名称已经存在,我希望用户选择修改字段或在android中忽略它 谁能告诉我怎么做吗 插入按钮的我的代码: public void insert(View v) { final String nm = name.getText().toS
mytable(名称文本、经度双精度、纬度双精度)
我要做的是添加一个具有唯一名称的记录。如果名称已经存在,我希望用户选择修改字段或在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();
}
}
当我插入具有相同名称的值时,它将被添加。但我所做的是,当用户输入已经存在的相同名称时,会生成一个警报,询问用户是要更新还是忽略。
如果他单击“是”,记录将被更新,如果“否”,则什么也不会发生…首先进行查询,检查是否有同名记录,如下所示:
SELECT * FROM mytable WHERE name='*text*'
在这里,名称
是用户的输入。然后检查该查询是否返回记录。如果有,请向用户提供反馈,以设置另一个名称,或通过更新返回的记录来忽略它。
如果它不返回任何记录,您可以将该记录插入数据库。使用
rawQuery
的正确方法是
c = db.rawQuery("select * from mytable where Name = ?", new String[] { nm });
使用
查询
,以及插入
或更新
。到底是什么问题?请为您迄今为止所做的操作发布代码。@CL.当用户单击“插入”时,如果数据库中有同名记录,则会形成警报,询问用户是否要更新或取消记录。@Neo我已插入代码。请看我在下面发布的查询是否有帮助。谢谢,但我想根据用户的选择更新数据库存在。这很好,但我上面给出的是使用rawQuery
方法的正确语法。整个前提是避免参数where子句的字符串连接。第二个参数后面有一个原因,您将其发送为null。