gpt4 book ai didi

Android SQLite 存储纬度和经度为 0

转载 作者:行者123 更新时间:2023-11-29 21:09:50 25 4
gpt4 key购买 nike

我正在尝试在一个 Android 应用程序的 SQLite 数据库中存储经纬度位置。我能够存储位置名称、位置地址、SSID 和密码,但纬度和经度似乎始终存储为 0。

我知道它正在尝试将值正确写入数据库,但在那个阶段和检索它们之间有些不对劲。

这是我的表的定义,我使用 REAL 数据类型来区分纬度和经度 - 这是否正确?

private static final String DATABASE_CREATE = "create table "
+ INFO_TABLE + " (" + COLUMN_NAME + " TEXT PRIMARY KEY NOT NULL, "
+ COLUMN_ADDRESS + " TEXT, "
+ COLUMN_LAT + " REAL, "
+ COLUMN_LONG + " REAL, "
+ COLUMN_SSID + " TEXT, "
+ COLUMN_PASSWORD + " TEXT);";

输入数据的部分,此时“值”是一个包含正确纬度和经度的列表:

public Info enterInfo(String name, String address, double lat, double lng, String ssid, String password){
ContentValues values = new ContentValues();
values.put(SQLiteHelper.COLUMN_NAME, name);
values.put(SQLiteHelper.COLUMN_ADDRESS, address);
values.put(SQLiteHelper.COLUMN_LAT, lat);
values.put(SQLiteHelper.COLUMN_LONG, lng);
values.put(SQLiteHelper.COLUMN_SSID, ssid);
values.put(SQLiteHelper.COLUMN_PASSWORD, password);

long insertId = database.insert(SQLiteHelper.INFO_TABLE, null, values);
}

最后这是通过从数据库读取创建列表的地方,这里的值为 0:

public List<Info> getAllInfo(){
List<Info> infos = new ArrayList<Info>();

Cursor cursor = database.query(SQLiteHelper.INFO_TABLE, allColumns, null,null,null,null,null);

cursor.moveToFirst();
while(!cursor.isAfterLast()){
Info info = cursorToInfo(cursor);
infos.add(info);
cursor.moveToNext();
}
//Close the cursor
cursor.close();
return infos;
}

不确定是否可能是由于 while(!cursor.isAfterLast()) 可能提前退出循环?还是 cursorToInfo 中的 toString? cursorToInfo(cursor) 的代码是:

private Info cursorToInfo(Cursor cursor){
Info info = new Info();
info.setName(cursor.getString(0));
return info;
}

最佳答案

您的 cursorToInfo() 仅检索第一列值,丢弃游标中任何其他可能的列。 Java 对象字段默认初始化为零/空值,这解释了为什么您未明确设置的字段显示为零。

关于Android SQLite 存储纬度和经度为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23314640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com