Asp.Net Sql Автоинкремент для Wall Post - PullRequest
0 голосов
/ 04 апреля 2009

У меня есть таблица, которая содержит три столбца.

"UserId" type-nvarchar

Тип PostAuthorId-nvarchar

Тип сообщения "Post"

Эта таблица будет содержать "настенные" сообщения, как в Facebook для каждой страницы пользователя. Я собираюсь использовать gridview на странице каждого пользователя для отображения сообщений. Проблема в том, что я хочу отображать их с последним (самым актуальным) постом первым, а самым ранним постом - последним.

Я никогда раньше не использовал автоинкремент, и я не уверен, что это ответ. Если это так, я не знаю, как его использовать. Я думал о добавлении столбца с датой публикации, а затем упорядочил по дате.

Если я в конечном итоге использую столбец даты, я также могу отобразить дату в сообщении. Есть ли способ конвертировать дату в читаемый формат?

Каков наилучший способ реализации этого типа заказа?

Ответы [ 5 ]

2 голосов
/ 04 апреля 2009

Если вы используете AutoIcrement, первая запись начнется с 1, и каждая запись будет увеличиваться оттуда. (настройка по умолчанию)

Если вы хотите отсортировать их по самым новым, сначала выполните ORDER BY ID DESC. Я бы предложил создать столбец с именем wallPostID, затем установить для него значение AutoIncrement, а также ваш первичный ключ

.

Дата форматирования: Если вы отображаете эти данные в gridView

  1. Перейти к редактированию столбцов в сетке
  2. Нажмите на поле «Дата» под «Выбранные поля» в левом нижнем углу
  3. В разделе "Свойства BoundField" справа. Перейти к данным -> DataFormatString
  4. {0:d} будет отображаться как 1/1/2010

На этом сайте больше информации в формате строки

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

1 голос
/ 04 апреля 2009

Столбец datetime определенно будет работать для чего-то подобного. Предполагая, что вы используете MS-SQL, вы также можете прикрепить значение по умолчанию к столбцу, используя встроенную функцию, например GETDATE () . Таким образом, вам нужно только ввести данные, которые имеют значение, и база данных позаботится о добавлении столбца datetime.

0 голосов
/ 04 апреля 2009

Вы всегда должны использовать поле идентификатора, которое автоматически увеличивается. Может также использоваться в качестве вашего ПК

0 голосов
/ 04 апреля 2009

Я бы предложил поле DateTime, а не автоинкремент, просто потому, что оно будет не только эффективным полем сортировки, но и сохранит информацию, которую вы, возможно, захотите отобразить. Если вы хотите, чтобы самые последние сначала были отсортированы, используйте Date и модификатор DESC:

Select ... Order By [Date] DESC;

Когда вы получаете данные, вы можете получить их как DateTime и изменить их с помощью C #. Вы можете использовать «ToShortDateString ()», как предложено mdresser, если вы просто хотите показать дату, или ToString («...»), если вы хотите также показать время. Вы также можете использовать SQL, чтобы преобразовать его в строку перед извлечением:

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

Если вы посмотрите на MSDN , вы увидите различные коды преобразования (101 - это код, использованный выше), которые можно использовать для перевода даты различными способами.

ОБНОВЛЕНИЕ : Вы можете использовать поле автоинкрементации для своего приложения по причинам, отличным от вашей явной необходимости сортировать записи на стене. Они просты в использовании - просто пометьте поле как Identity при использовании SQL Server (другие БД аналогичны). Что касается использования их в вашей программе, просто думайте о поле как о поле Int, которое вам никогда не нужно устанавливать.

Теперь, зачем вам использовать поле с автоинкрементом? Возможно, самая простая причина заключается в том, что они дают вам простой способ идентифицировать каждую запись. Например, если вы разрешаете людям изменять или удалять свои записи на стене, идеально подходит поле с автоинкрементом, поскольку оно дает вам возможность легко просматривать каждую запись (каждой записи будет назначено свое собственное уникальное значение). Вы можете поставить «x» рядом с записью, как это делает StackOverflow, и сделать ее обратным вызовом со значением UID (автоинкремент). Обратите внимание, что вы должны установить свой первичный ключ в поле UID, если вы будете делать это.

Теперь, , если вы найдете их полезными по этой причине , то вы также можете отсортировать по UID. Я по-прежнему сохраню дату, чтобы вы могли предоставить обратную связь по дате и времени, когда запись была сделана на стене, но это больше не будет вашим индексированным или отсортированным полем.

0 голосов
/ 04 апреля 2009

Для преобразования даты и времени в читаемый формат попробуйте:

DateTime postDate;
string value = postDate.ToShortDateString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...