当前位置: 首页 > 知识库问答 >
问题:

从sqlite数据库检索ID

寿意远
2023-03-14

关于我的上一个问题,我想从创建的sqlite数据库中检索ID,将其作为Intent putExtra()中的数据传递,以便将其用作PendingContent的ID。getActivity()。目前,我正在使用queryNumEntries为从我的DatabaseManager中的以下代码添加到数据库中的每个提醒设置id。类别:

public long reminderCount(){
        SQLiteDatabase sqlDB = this.getReadableDatabase();
        return DatabaseUtils.queryNumEntries(sqlDB, DatabaseReminder.TABLE_NAME);
    }

并在AddActivity中调用它。班

String remindId;
long RemID;
int remId;

RemID = databaseManager.reminderCount()+1;
remindId = String.valueOf(RemID);                
remId = Integer.parseInt(remindId);

private void sendUpdateAlarm() {
        Intent updateIntent = new Intent(getApplicationContext(), UpdateReminderActivity.class);
        updateIntent.putExtra("NotifID", remId);
    }

    private void setAlarm() {
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        Intent intent = new Intent(getApplicationContext(), ReminderReceiver.class);
        intent.putExtra("DateTime", dateTimePicked);
        intent.putExtra("NotifID", remId);
        intent.putExtra("Title", titlePicked);
        intent.putExtra("Description", descriptionPicked);

        PendingIntent addIntent = PendingIntent.getBroadcast(this, remId, intent, 0);
        alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, Date.parse(dateTimePicked), addIntent);
    }

在创建条目时,除了尝试此操作之外,是否还有其他方法可以正确检索ID,我感到困惑。

共有1个答案

嵇永望
2023-03-14

在创建条目时,除了尝试此操作之外,是否还有其他方法可以正确检索ID,我感到困惑。

是的,但这取决于表格的定义。

如果在插入行(条目)时生成id,并且如果使用方便的SQLiteDatabase插入方法(或insertOrThrow方法或insertWithOnconflict方法),则返回的long将是生成的id,如果未插入行,则返回的long将是-1。

如果使用整型主键或整型主键自动递增定义列,将生成id。(有关说明,请参阅下面的链接)

  • 请注意,只有INTEGER关键字具有此效果。例如,INT PRIMARY KEY将不起作用。
  • PRIMARY KEY可以在列级别(如图所示),也可以在TABLE级别。
  • 解释见https://www.sqlite.org/lang_createtable.html#rowids_and_the_integer_primary_keyhttps://sqlite.org/autoinc.html

在许多情况下,使用假设新id比表中的行数大1的方法是不准确的,例如如果删除了最后一行以外的任何行。

不太容易产生另一个值的查询是使用coalesce(max(id),0),因为它获得最高id,而不管删除的行如何。

  • 请参见https://sqlite.org/lang_aggfunc.html#max_agg

但是,使用max aggregate函数时,返回的值也可能不正确,例如插入的行的id小于最大值。如果

  • 插入或时已指定id值
  • 已使用允许的最高id,但未在列定义中对自动增量进行编码(如果已对自动增量进行编码,则在使用允许的最高id的情况下,将导致SQLITE\u FULL错误)
 类似资料:
  • 我想从数据库中检索名称。但我总是收到错误: 数据库Java语言 它不断返回错误 android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1,字符串名称=helper.getProductNameT(cur); 有人知道我的编码哪里出错了吗?

  • 所以我根据YouTube上的教程创建了一个房间数据库。我有两个栏day and likes,每个栏都有int.目前,我已经用三行数据手动填充了数据库。 下面是手动填充数据库的代码: 在我的Dao类中,我当前有Insert、Update、deleteAll和getall...方法。这里是道: } 现在,我要从Room数据库中检索基于当天的数据。所以我想要第6天的likes数,它是1。我想检索数据并将

  • 我正在两个标记之间画一条路线,我想保存那条路线。为此,我将包含lat和lng的ArrayList保存在Firebase数据库中。但我在取回航路点时遇到了问题。我是这样插入的: 在检索数据时,我尝试执行以下操作:

  • 问题内容: 大家好,我需要您的帮助。我在应用程序中创建SQLite数据库,然后将数据插入其中。现在我想从中检索数据,但我只想插入一个数据并检索它,然后将其显示在TextView中。 请帮助我,这是我第一次使用SQLite数据库。 问题答案: 这是我如何实现此目标的示例。 在这个例子中,我会,,和一个学生的名字和年龄。 首先创建一个类,我叫我的 DBManager.java 然后创建一个我叫我的 S

  • 我想从sqlite数据库添加的数据中在listview中显示我的所有数据。当我单击save按钮时,它显示一条消息“added successful”。但每次它都显示错误消息“data not found”。为什么不显示listview? 错误显示如下: MyDatabaseHelper.java

  • 我想从数据库中检索整个表并将其显示到我的jsp页面中,但我得到了一个错误 我的工作人员豆。java是 而我的getAllDetailDAO.java是 连接提供程序包com.staff.db; 而我的DisplayAllDetail.jsp是 我的错误是 StackTrace:org.apache.jasper.servlet.jspServletwrapper.handleJSPExceptio