相关疑难解决方法(0)

插入后获取生成的ID

我正在使用SQLite和Android,我想知道获取我插入的行的生成ID的最佳方法.

我认为解决方案是在include之后进行搜索,但它看起来并不是最好的方法.

java sqlite android

133
推荐指数
3
解决办法
7万
查看次数

如何从SQLite表中检索最后一个自动增量ID?

我有一个表列消息列ID(主键,自动增量)和内容(文本).
我有一个表用户名列有用户名(主键,文本)和哈希.
一个发件人(用户)向许多收件人(用户)发送邮件,收件人(用户)可以收到许多邮件.
我创建了一个包含两列的表Messages_Recipients:MessageID(引用Messages表的ID列和Recipient(引用Users表中的用户名列).此表表示收件人和邮件之间的多对多关系.

所以,我的问题是这个.在将新消息存储在数据库中之后,将创建新消息的ID.但是,我如何保存对刚刚添加的MessageRow的引用以便检索这个新的MessageID?
我总是可以在数据库中搜索最后添加的行,但是这可能会在多线程环境中返回一个不同的行?

编辑:据我所知,SQLite你可以使用SELECT last_insert_rowid().但是如何从ADO.Net中调用此声明?

我的持久性代码(messages和messagesRecipients是DataTables):

public void Persist(Message message)
{
    pm_databaseDataSet.MessagesRow messagerow;
    messagerow=messages.AddMessagesRow(message.Sender,
                            message.TimeSent.ToFileTime(),
                            message.Content,
                            message.TimeCreated.ToFileTime());
    UpdateMessages();
    var x = messagerow;//I hoped the messagerow would hold a
    //reference to the new row in the Messages table, but it does not.
    foreach (var recipient in message.Recipients)
    {
        var row = messagesRecipients.NewMessages_RecipientsRow();
        row.Recipient = recipient;
        //row.MessageID= How do I find this??
        messagesRecipients.AddMessages_RecipientsRow(row);
        UpdateMessagesRecipients();//method not shown
    } 

}

private void UpdateMessages()
{
    messagesAdapter.Update(messages);
    messagesAdapter.Fill(messages);
}
Run Code Online (Sandbox Code Playgroud)

database sqlite primary-key auto-increment junction-table

72
推荐指数
5
解决办法
10万
查看次数

Android/java Sqlite:如何检索最大日期时间?

下面是我从sqlite db获得的查询的快照.

在谷歌搜索并阅读了一些问题之后,我已经知道使用聚合函数检索最大日期时间max()是不可能的,因为sqlite不支持太多数据类型但是将数据类型视为text.

所以,我把这些数据带到了一个List或那个java级别.那么我现在怎么能从这个列表中获得最大日期时间.

在java中是否有这种格式的直接构造.或者我们在sqlite级别有一些我找不到的东西.

Sqlite返回了数据

java sqlite android

10
推荐指数
1
解决办法
1万
查看次数