我有一個(gè)表Messages,其列ID(主鍵,自動(dòng)遞增)和Content(文本)。我有一個(gè)表Users,具有用戶名列(主鍵,文本)和哈希。一個(gè)發(fā)件人(用戶)將一條消息發(fā)送給許多收件人(用戶),并且一個(gè)收件人(用戶)可以有很多消息。我創(chuàng)建了一個(gè)具有兩列的表Messages_Recipients:MessageID(指的是Messages表的ID列和Recipient(指的是Users表中的username列)。該表代表了收件人和消息之間的多對(duì)多關(guān)系。所以,我的問題是這個(gè)。將新消息的ID存儲(chǔ)在數(shù)據(jù)庫中后,將創(chuàng)建該ID。但是,如何保留對(duì)我剛剛添加的MessageRow的引用,以檢索此新的MessageID?我總是可以在數(shù)據(jù)庫中搜索添加的最后一行,但是在多線程環(huán)境中可能返回其他行嗎?編輯:據(jù)我了解,對(duì)于SQLite,您可以使用SELECT last_insert_rowid()。但是,如何從ADO.Net調(diào)用此語句?我的持久性代碼(消息和消息收件人是數(shù)據(jù)表):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);}
如何從SQLite表中檢索最后一個(gè)自動(dòng)遞增的ID?
慕田峪4524236
2019-12-21 12:54:48