当ID为GUID时,如何从数据库获取最新行

时间:2015-12-07 03:19:23

标签: c# mysql asp.net sql-server guid

我在尝试从SQL表中提取最新行时遇到了一些麻烦。用户可以填写费用表单,并将ASP.NET文本框中的数据发送到数据库,但是当用户提交更多数据时,我无法提取最新数据并使用该数据填充文本框。我使用GUID作为ID字段。我已将userID存储在Session["New"]

这是我的SQL语句:

string str = "select * from CashFlow where userID='" + Session["New"].ToString() + "'"; 

6 个答案:

答案 0 :(得分:1)

在数据库中创建名为table <- aggregate( .~ obs5, DF, function(x) c(mean = mean(x), sd = sd(x))) CreateDate的新列。

在表格集UpdateDateUpdateDateCreateDate中进行插入时。当您对表格中的行进行更新时,只需将DateTime.Now设置为UpdateDate

之后你将需要像这样的查询,为最后创建:

DateTime.Now

以及最后更新的

select * from CashFlow order by CreateDate desc

答案 1 :(得分:0)

数据库通常没有“最新”的概念,因此如果您的表格中没有包含某种时间戳,则无法获得最新记录。

修复 - 在记录中添加某种时间戳字段,以便能够在该字段上“排序”。例如,您可以考虑添加“自动增量”字段(您必须将其添加到PK - mysql auto-increment on a non-primary key)。

旁注 - 请使用参数化查询,而不是使用字符串连接构建查询 - Parameterized Query for MySQL with C#

近似样本(假设您有TimeStamp字段):

select * from CashFlow order by UpdateDate desc

答案 2 :(得分:0)

听起来你倒退了整个问题。使用GUID的关键是ID由用户(或本例中的应用程序)生成。

鉴于GUID是由应用程序生成的,最后一个ID与上次生成的ID相同。

因此,只需在内存中使用一个,而不是使用数据库查询来处理你知道的事情。

答案 3 :(得分:0)

尝试使用NEWSEQUENTIALID()生成GUID,然后当ID为GUID时,您可以从数据库中获取最后一行。因为它创建的GUID大于自Windows启动以来该指定计算机上此函数先前生成的任何GUID。

这是一个例子。 CREATE TABLE myTable(ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID());

答案 4 :(得分:0)

您可以在排序和检查用户名

后选择前1行
string str = "SELECT TOP 1 OrderNr FROM Orders Where CustomerName = 'Maria' ORDER BY OrderNr DESC;";

只需根据需要对字符串进行一些调整,但这应该可以让最后一行说出客户。

答案 5 :(得分:0)

 insert into CashFlow (Column names)
      OUTPUT inserted.userID
    values
   (inserted values in Column )

     store Return value in variable For fetch Latest Record By userID