使用 SQLite & 设置 _ID 字段Android 中的内容提供者

发布于 2024-10-21 12:17:01 字数 662 浏览 2 评论 0原文

我正在尝试在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

七颜 2024-10-28 12:17:01

您最好在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文