java - 如何使用android sqlite数据库更新一行中的多列?

标签 java android database sqlite insert-update

我有一个存储位置数据的安卓应用程序。 SQLite 数据库中有三组纬度和经度。我想获取一个位置的数据 3 次并将其存储到数据库中。在我的第一步中存储地点、位置地址、纬度和经度。第二步,不改变位置和地方取经纬度,用第一个数据存储到下一列。

http://i.stack.imgur.com/YRaTL.jpg

可以看到在上面的图片url中有3组纬度和经度。获得第一个纬度和经度后,我想将第二个纬度和经度添加到“纬度”和“经度”列,然后将下一个值添加到“纬度”和“经度”。我的编码几乎没问题,但是在添加第二行时出现问题。第一个纬度和经度正在保存而没有任何错误,但在第二个和第三个中复制了上限值。您可以在下图中看到它。我该如何解决这个问题?我的数据库创建代码如下。我需要在这里做哪些更改?

   public static final String DATABASE_NAME = "locationdb.db";
   public static final String TABLE_NAME = "locations";
   public static final String CCOLUMN_ID = "id";
   public static final String COLUMN_LAT = "latitude";
   public static final String CCOLUMN_LON = "longitude";
   public static final String COLUMN_LAT2="latitudey";
   public static final String COLUMN_LON2="longitudey";
   public static final String COLUMN_LAT3="latitudez";
   public static final String COLUMN_LON3="longitudez";
   public static final String COLUMN_LOC = "location";
   public static final String COLUMN_PLACE="place";

   private HashMap hp;

   public SQLiteController(Context context) 
  {
    super(context, DATABASE_NAME, null,1);
    // TODO Auto-generated constructor stub
  }

  @Override
  public void onCreate(SQLiteDatabase db)
  {
    String query;
    query = "CREATE TABLE locations ( id INTEGER PRIMARY KEY, place TEXT, location TEXT, latitude TEXT, longitude TEXT, latitudey TEXT, longitudey TEXT, latitudez TEXT, longitudez TEXT)";
    db.execSQL(query);


  }

  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 
  {
    String query;
    query = "DROP TABLE IF EXISTS locations";
    db.execSQL(query);
    onCreate(db);

  }

  public boolean insertLocation(String place, String location, String latitude, String longitude ) 
  {
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("place", place);
    values.put("location", location);
    values.put("latitude",latitude);
    values.put("longitude",longitude);
    database.insert("locations", null, values);
    database.close();
    return true;

  }

  public boolean insertLocation2(String latitudey, String longitudey)
  {

    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("latitudey",latitudey);
    values.put("longitudey", longitudey);
    database.update("locations", values, null,null);
    database.close();
    return true;

  }

  public boolean insertLocation3(String latitudez, String longitudez)
  {
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("latitudez", latitudez);
    values.put("longitudez", longitudez);
    database.update("locations", values, null, null);
    database.close();
    return true;

  }

最佳答案

您必须指明要更新哪一行:

public boolean insertLocation2(String place, String location, String latitudey, String longitudey)
{
    SQLiteDatabase database = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("latitudey",latitudey);
    values.put("longitudey", longitudey);
    database.update("locations", values, "place=? and location=?", new String[] {place, location});
    database.close();
    return true;
}

否则所有行都将被更新!

关于java - 如何使用android sqlite数据库更新一行中的多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30642834/

相关文章:

java - 安心API测试中如何传递数组post请求?

java - PowerMockito 模拟通用构造函数

javascript - Bootstrap 的下拉菜单在按下它们后不到一秒就会关闭(Android 4.2.1,stock 浏览器)

java - 启动 Activity 并上传数据库时出错

mysql - SQL DDL : Creating a recursive table (MySQL)

c# - 从 MDF 数据库中删除记录

java - 首选项 API 存储

Java log4j 返回一些警告

android - 如何在瑞芯微平台的Android电视盒上实现鼠标?

php - 检索链接到数据库中所有值的 1 个值