使用 SQLite & 设置 _ID 字段Android 中的内容提供者
我正在尝试在 Android 应用程序中设置一个 ContentProvider 来保存有关房屋的信息。我希望能够将 _ID 字段设置为与外部数据库中的 ID 字段相同(程序会将 ContentProvider 与此外部数据库同步)。
这样做的原因是我希望能够引用 ID,如下所示:
content://com.example.acme.propertyprovider/properties/23
其中 23 是外部数据库和内部数据库中的相同 ID。
以下内容只会导致错误“android.database.SQLException:无法将行插入到 content://com.example.acme.propertyprovider/properties
ContentValues values = new ContentValues();
values.put(Properties._ID, 23);
values.put(Properties.COLUMN_NAME_ROAD, "123 Sample Property");
values.put(Properties.COLUMN_NAME_RENT, 320);
getContentResolver().insert(Properties.CONTENT_URI, values);
I'm trying to set up a ContentProvider in an Android app to hold information about houses. I'd like to be able to set the _ID field to be the same as the ID field in my external database (the program will sync the ContentProvider with this external database).
The reason for this is so I would like to be able to reference the ID like:
content://com.example.acme.propertyprovider/properties/23
where 23 is the same ID in both the external database and the internal database.
The following just causes the error "android.database.SQLException: Failed to insert row into content://com.example.acme.propertyprovider/properties
ContentValues values = new ContentValues();
values.put(Properties._ID, 23);
values.put(Properties.COLUMN_NAME_ROAD, "123 Sample Property");
values.put(Properties.COLUMN_NAME_RENT, 320);
getContentResolver().insert(Properties.CONTENT_URI, values);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您最好在 Android 数据库中设置外键来保存外部数据库中的 id。这样您就不必担心事情不同步。由于 _ID 字段是自动递增的,您将为自己制造一场噩梦。
添加诸如 extHouse_id (或其他)之类的内容。这是一种非常常见的做法。
You'd be better off setting a foreign key in the Android database to hold the id from your external database. Then you don't have to worry about things getting out of sync. Since the _ID fields are auto-incrementing you'll be creating a nightmare for yourself.
Add something like extHouse_id (or whatever). That's a very common practice.