如果已经存在更新或插入 android 如何检查 SQLite 中的数据
How to check data in SQLite if already exist update or else insert in android
我想检查 SQLite 中的数据是否已经存在可以更新,否则 insert.I 正在检查我在下面提到的这样的代码。
代码:
public long addmenus(String navigationdrawer,String optionname)
{
SQLiteDatabase menus=this.getWritableDatabase();
try {
ContentValues values=new ContentValues();
values.put(HEADER_NAME,navigationdrawer);
values.put(CHILD_NAME,optionname);
// menus.insert(TABLE_NAME,null,values);
// String owner=optionname;
Cursor cursor = menus.rawQuery("select * from TABLE_NAME where CHILD_NAME ='"+ optionname +"'", null);
if(cursor.getCount()<1)
{
//execute insert query here
long rows = menus.insert(TABLE_NAME, null, values);
return rows;
// return rows inserted.
}
else
{
//Perform the update query
String strFilter = "CHILD_NAME" + optionname;
long updaterow=menus.update(TABLE_NAME,values,strFilter,null);
return updaterow;
// return rows updated.
}
// menus.close();
} catch (Exception e) {
return -1;
}
finally {
if (menus != null)
menus.close();
}
}
我的activity:
我将整个 json 数据转换为字符串对象,然后插入到 SQLite 中。
String productpage=jsonObject.toString();
db.addmenus(productpage,"Navigationmenus");
但它没有work.It无法插入到 sqlite。
谁解决了这个问题 感激不尽。
提前致谢
您可以这样使用 insertWithOnConflict()
db.insertWithOnConflict(TABLE, null, yourContentValues, SQLiteDatabase.CONFLICT_REPLACE);
你应该使用替换成
REPLACE INTO table(...) VALUES(...);
问题不是很清楚,但我想你想检查 data/record 是否插入到 SQLite 中。您将需要定义一些额外的变量 long rowInserted insert()
方法 returns 新插入行的行 ID,或发生错误时为 -1。
menus.insert(TABLE_NAME, null, values);
long rowInserted = db.insert(AddNewPhysicalPerson, null, newValues);
if(rowInserted != -1)
Toast.makeText(myContext, "New row added :" + rowInserted, Toast.LENGTH_SHORT).show();
else
Toast.makeText(myContext, "Something wrong", Toast.LENGTH_SHORT).show();
已更新
检查数据在 table 或列中?为此你使用这个代码
public boolean Exists(String id){
Cursor res = getAllData();
int count=0;
while (res.moveToNext()){
String email =res.getString(3);
if(email.equals(id)){
count++;
}
}
if(count==0){
return false;
} else{
return true;
}
}
其次你询问 json 首先将所有数据存储在任何列表中 运行 时间并从中获取字符串然后你可以存储在 SQlite
try {
items = jsonObject.getJSONArray("myjsonattribute");
List<MyAnySetterGetter> mList = new ArrayList<MyAnySetterGetter>();
for (int i = 0; i < items.length(); i++) {
JSONObject c = items.getJSONObject(i);
String mfilename = c.getString("myjsonattribute2");
mList.add(mfilename);
}
} catch (JSONException e) {
//e.printStackTrace();
}
然后使用上面的列表将数据从列表插入到 SQLite
喜欢
String str1 = mList.get(position).getMYITEM1();
String str2 = mList.get(position).getMYITEM2();
在 SQLite 中插入 str1 和 str2 希望你会明白。
你可以参考这个。 link 解释了如何在 table 中找到可用的电子邮件地址,您可以更改列名称 table 并根据其传递值。在您的场景中,您想要检查名称是否已经存在,因此您必须传递要查找的名称。如果名称在那里,那么此方法将为 return true 或 false。您可以根据 response.i.e. 验证是否必须插入或更新,false 表示您必须插入,否则如果为 true 则表示您必须更新。
你应该
- 为table设置密钥,然后
- 插入(如果key存在则不再插入),然后
- 更新所有行。
我想检查 SQLite 中的数据是否已经存在可以更新,否则 insert.I 正在检查我在下面提到的这样的代码。
代码:
public long addmenus(String navigationdrawer,String optionname)
{
SQLiteDatabase menus=this.getWritableDatabase();
try {
ContentValues values=new ContentValues();
values.put(HEADER_NAME,navigationdrawer);
values.put(CHILD_NAME,optionname);
// menus.insert(TABLE_NAME,null,values);
// String owner=optionname;
Cursor cursor = menus.rawQuery("select * from TABLE_NAME where CHILD_NAME ='"+ optionname +"'", null);
if(cursor.getCount()<1)
{
//execute insert query here
long rows = menus.insert(TABLE_NAME, null, values);
return rows;
// return rows inserted.
}
else
{
//Perform the update query
String strFilter = "CHILD_NAME" + optionname;
long updaterow=menus.update(TABLE_NAME,values,strFilter,null);
return updaterow;
// return rows updated.
}
// menus.close();
} catch (Exception e) {
return -1;
}
finally {
if (menus != null)
menus.close();
}
}
我的activity:
我将整个 json 数据转换为字符串对象,然后插入到 SQLite 中。
String productpage=jsonObject.toString();
db.addmenus(productpage,"Navigationmenus");
但它没有work.It无法插入到 sqlite。
谁解决了这个问题 感激不尽。 提前致谢
您可以这样使用 insertWithOnConflict()
db.insertWithOnConflict(TABLE, null, yourContentValues, SQLiteDatabase.CONFLICT_REPLACE);
你应该使用替换成
REPLACE INTO table(...) VALUES(...);
问题不是很清楚,但我想你想检查 data/record 是否插入到 SQLite 中。您将需要定义一些额外的变量 long rowInserted insert()
方法 returns 新插入行的行 ID,或发生错误时为 -1。
menus.insert(TABLE_NAME, null, values);
long rowInserted = db.insert(AddNewPhysicalPerson, null, newValues);
if(rowInserted != -1)
Toast.makeText(myContext, "New row added :" + rowInserted, Toast.LENGTH_SHORT).show();
else
Toast.makeText(myContext, "Something wrong", Toast.LENGTH_SHORT).show();
已更新 检查数据在 table 或列中?为此你使用这个代码
public boolean Exists(String id){
Cursor res = getAllData();
int count=0;
while (res.moveToNext()){
String email =res.getString(3);
if(email.equals(id)){
count++;
}
}
if(count==0){
return false;
} else{
return true;
}
}
其次你询问 json 首先将所有数据存储在任何列表中 运行 时间并从中获取字符串然后你可以存储在 SQlite
try {
items = jsonObject.getJSONArray("myjsonattribute");
List<MyAnySetterGetter> mList = new ArrayList<MyAnySetterGetter>();
for (int i = 0; i < items.length(); i++) {
JSONObject c = items.getJSONObject(i);
String mfilename = c.getString("myjsonattribute2");
mList.add(mfilename);
}
} catch (JSONException e) {
//e.printStackTrace();
}
然后使用上面的列表将数据从列表插入到 SQLite 喜欢
String str1 = mList.get(position).getMYITEM1();
String str2 = mList.get(position).getMYITEM2();
在 SQLite 中插入 str1 和 str2 希望你会明白。
你可以参考这个
你应该
- 为table设置密钥,然后
- 插入(如果key存在则不再插入),然后
- 更新所有行。