Wall Post的Asp.Net Sql自动增量

时间:2009-04-03 23:32:07

标签: asp.net sql

我有一个包含三列的表。

“UserId”type-nvarchar

“PostAuthorId”type-nvarchar

“发布”类型文字

此表格将包含每个用户页面中的“墙”帖子,如facebook。我将在每个用户的页面上使用gridview来显示帖子。问题是我希望用最新(最新)的帖子作为第一个帖子并且最早的帖子是最后一个来显示它们。

我以前从未使用过自动增量,我不确定这是不是答案。如果是,我不知道如何使用它。我想添加一个发布日期的列,然后按日期排序。

如果我最终使用日期列,我还可以在帖子上显示日期。有没有办法将日期转换为可读格式?

实施此类订购的最佳方式是什么?

5 个答案:

答案 0 :(得分:2)

如果使用AutoIcrement,则第一条记录将从1开始,每条记录将从那里开始增加。 (默认设置)

如果您想先按最新排序,请先执行ORDER BY ID DESC 我建议创建一个名为wallPostID的列,然后将其设置为AutoIncrement以及您的主键

日期格式: 如果要在gridView中显示此数据

  1. 转到网格视图上的“编辑列”
  2. 点击左下角“选定字段”下的日期字段
  3. 在右侧的“BoundField属性”下,转到数据 - > DataFormatString
  4. {0:d}将显示为1/1/2010
  5. 此网站在字符串格式中有更多信息

    http://msdn.microsoft.com/en-us/library/fht0f5be.aspx

答案 1 :(得分:1)

日期时间列肯定适合这样的事情。假设您正在使用MS-SQL,您还可以使用内置函数GETDATE()将默认值附加到列。这样,您只需输入重要的数据,数据库将负责添加datetime列。

答案 2 :(得分:0)

要将日期时间转换为可读格式,请尝试:

DateTime postDate;
string value = postDate.ToShortDateString();

答案 3 :(得分:0)

我建议使用DateTime字段而不是自动增量,因为它不仅可以作为有效的排序字段,还可以保留您可能想要显示的信息。如果你想要最新的第一个,你将使用日期和“DESC”修饰符进行排序:

Select ... Order By [Date] DESC;

检索数据时,可以将其作为DateTime检索并使用C#进行修改。如果您只想显示日期,可以使用mdresser建议的“ToShortDateString()”,如果您希望显示时间,也可以使用ToString(“...”)。您还可以在检索之前使用SQL将其转换为字符串:

convert(Varchar(10), @mydatetime, 101)

如果您查看MSDN,您会看到各种转换代码(上面使用的代码是101),可用于以各种方式翻译日期。

更新:您可能希望为您的应用程序使用自动增量字段,原因不是您表达的需要对墙条目进行排序。它们易于使用 - 如果使用SQL Server(其他DB类似),只需将该字段标记为 Identity 即可。至于在程序中使用它们,只需将该字段视为您永远不必设置的Int字段。

现在,为什么要使用自动递增字段?也许最直接的原因是它们可以让您轻松识别每条记录。例如,如果您允许人们更改或删除其墙条目,则自动递增字段是理想的,因为它为您提供了一种轻松查找每条记录的方法(每条记录将分配其自己的唯一值)。您可以像StackOverflow那样在记录旁放置一个“x”,并使用UID(自动增量)值进行回调。请注意,如果您要执行此操作,则应在UID字段上设置主键。

现在,如果您发现它们因此而有用那么您也可以按UID排序。我仍然会存储日期,以便您可以提供日期和时间反馈,了解何时在墙上创建条目,但这不再是您的索引或排序字段。

答案 4 :(得分:0)

您应始终使用自动递增的ID字段。也可以用作你的PK