在DataSet中没有完整表的情况下向数据库中添加行?

时间:2014-12-21 21:11:35

标签: database vb.net ms-access

我有一个连接到我的VB.NET项目的数据库,我的程序操作的一部分是我添加了一行。为了提高效率,我正在努力减少我从数据库中提取的数据。目前,我不得不采取整个表(我不想做的事情)我想尽可能少的数据,以便能够添加行。这是我目前的代码:

MessagesDataSet.Clear()
MessagesTableAdapter.SelectCommand = New OleDb.OleDbCommand("SELECT * FROM Messages", MessagesTableAdapter.SelectCommand.Connection)
MessagesTableAdapter.Fill(MessagesDataSet)
Dim row As DataRow = MessagesDataSet.Tables(0).NewRow()
row.Item(0) = MessagesDataSet.Tables(0).Rows.Count + 1
row.Item(1) = uuid
row.Item(2) = Now
row.Item(3) = message
row.Item(4) = "<ROOM>"
row.Item(5) = currentRoomName
MessagesDataSet.Tables(0).Rows.Add(row)
MessagesTableAdapter.Update(MessagesDataSet)

如果我尝试其他任何操作,我会得到一个异常(通常该行已经属于该表,位于第二行。)这是一个带有第一列的Access(2007-2013)数据库(row.Item(0) )作为主键。

任何帮助将不胜感激!

更新:我尝试将SELECT语句更改为仅下拉主键,但是当我这样做时,我在语句row.Item(1)= uuid得到一个IndexOutOfRangeException(找不到列1)。

1 个答案:

答案 0 :(得分:0)

将MessagesDataSet.Tables(0).Rows.Count + 1更改为MessagesDataSet.Tables(0).Rows.Count - 1

它会为您提供最近添加的最后一行