2015-09-03 4 views
1

В моем универсальном приложении C# VS2015 Windows 10 я не могу создать поле DateTime в схеме базы данных. Вместо этого он создает bigint. У меня есть другие таблицы, которые создали поле DateTime без проблем.SQLite не создает поле DateTime

Вот один из примеров: (см поле GameDate)

Таблица [Результаты] Поля: 17 [Сезон]: NVARCHAR (100) [Id]: INTEGER [HomeTeamName]: NVARCHAR (100) [OppTeamName]: NVARCHAR (100) [GameDate]: Дата и время

Foreign Keys: 0 
Indexes: 1 
    [] PRIMARY 
     [Id] AUTOINCREMENT 
Triggers: 0 
Unique constraints: 0 
Check constraints: 0 



    private void AddUserButton_Click(object sender, RoutedEventArgs e) 
    { 

     User user = new User(); 
     user.Name = "User1"; 
     user.GameDate = Convert.ToDateTime("2015-09-02"); 
     var path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "BaseBallOU.db"); 
     using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path)) 
     { 
      conn.Insert(user); 
     } 
    } 

    private void CreateTablesButton_Click(object sender, RoutedEventArgs e) 
    { 
     var path = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "BaseBallOU.db"); 
     using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), path)) 
     { 
      conn.CreateTable<User>(); 
      conn.CreateTable<TeamX>(); 
     } 
    } 
} 
public class User 
{ 

    [SQLite.AutoIncrement, SQLite.PrimaryKey] 
    public int id { get; set; } 
    public DateTime GameDate { get; set; } 
    public string Name { get; set; } 

} 

public class TeamX 
{ 
    [SQLite.AutoIncrement, SQLite.PrimaryKey] 
    public int id { get; set; } 
    public string TeamName { get; set; } 
    public DateTime GameDate { get; set; } 
} 

Ниже то, что будет создаваться в таблицах:

Я использую следующие ссылки:

SQLite-нетто-PCl SQLite.Net-PCL SQLite для Универсального приложения Platform

+0

Miiite, я видел другие ссылки, что SQLite не имеет типа данных DateTime, но у меня есть другие таблицы, которые при вычислении схемы показывают тип «тип данных». Смотрите схему для другой таблицы ниже, и проверить "GameDate" field.Table [Результаты] поля: 17 [Сезон]: NVARCHAR (100) [OverUnderTotal]: двойная точность [OverUnderAlpha]: NVARCHAR (100) [GameTotal]: Int [Id]: INTEGER [HomeTeamName]: NVARCHAR (100) [OppTeamName]: NVARCHAR (100) [GameDate]: Дата и время –

ответ

1

Если я не ошибаюсь, нет типа DateTime в SQLite. Преобразуйте дату в строку при сохранении нового объекта и преобразуйте ее обратно в DateTime при ее чтении.

+0

правильно - см 2.2 в документации для справки - https: //www.sqlite.org/datatype3.html – kdazzle