2016-08-22 31 views
0

本课程将通过SQLite.Net-PCLSQLite.Net-PCL如何插入日期时间为SQLite的

class Purchase 
    { 
     [SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement] 
     public int QId { get; set; } 
     public DateTime PurchaseDate { get; set; } 
     public int Qty { get; set; } 
    } 

我需要插入这个日期到这个tblPurchase在SQLite的数据库中创建一个表。

strDate ="2016/08/10" 
strTime ="10:17:26" 

string[] strAr_Date = strDate.Split('/'); 
string strYear = strAr_Date[0].ToString(); 
string strMth = strAr_Date[1].ToString(); 
string strDay = strAr_Date[2].ToString(); 

// - 上DateTime.Now

string strDateTime = strDay + "/" + strMth + "/" + strYear + " " + strTime;  
    DateTime dt = DateTime.Parse(strDateTime); 

重新创建日期基地这DT将被插入下面SQLite.Net-PCL:

public static void InsertQueueData(string strContentA, string strContentB) 
{ 
var db = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), DBPath); 

var newItem = new Purchase() 
      { 
       PurchaseDate = dt,     
       Qty = 20 
      }; 

      db.Insert(newItem); 
} 

问题:

1)是否将dt(PurchaseDate = dt)转换为SQLite格式yyyy-mm-dd hh:mm:ss通过SQlite.Net-PCL插入时? 2)可以使用:
var db = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(),DBPath);

Edit_2:

to use method(1) to insert a DateTime as below: 

DateTime dt = DateTime.Parse(strDateTime); 


The method must include : 
var db = new SQLiteConnection(new SQLitePlatformWinRT(), DBPath,false); 

(1) 
public static void InsertQueueData(string strContentA, string strContentB) 
{ 

var db = new SQLiteConnection(new SQLitePlatformWinRT(), DBPath,false); 

var newItem = new Purchase() 
    { 
    PurchaseDate = dt,     
       Qty = 20 
    }; 

    db.Insert(newItem); 
} 

2) The purchase Class must declare in this way : 

class Purchase 
{ 
    [SQLite.Net.Attributes.PrimaryKey, SQLite.Net.Attributes.AutoIncrement] 
    public int QId { get; set; } 

    public string PurchaseDate { get; set; } // Dont use DateTime PurchaseDate 

    public int Qty { get; set; } 
} 





    Edit_3 <br/> 

    public static string DBPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "Purchase.sqlite"); 

    public static string strDbName = "Purchase.sqlite"; 

private void CreateDBNow() 
{ 
var DBPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "Purchase.sqlite"); 
using (SQLite.Net.SQLiteConnection conn = new SQLite.Net.SQLiteConnection(new SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), DBPath)) 
    { 
    conn.CreateTable<Purchase>(); 
} 

} 


     Please help. Thanks 

InEdit_3

使用: 新SQLite.Net.SQLiteConnection(新SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(),DBPATH))

回答

1

这是dt(PurchaseDate = dt)将被转换为SQLite格式yyyy-mm-dd hh:mm:ss通过SQlite.Net-PCL插入时?

答案是否定的Datetime将被转换为以下格式在SQLite的: enter image description here

我使用SQLite Toolbox检查数据。

如果您想将DateTime转换为yyyy-mm-dd hh:mm:ss的格式。您需要使用:

//false stands for 'storeDateTimeAsTicks' 
//And the table need to be recreated if the table aready exists 
db = new SQLiteConnection(new SQLitePlatformWinRT(), DBPath,false); 

然后在SQLite的日期时间格式将是这样的: enter image description here

+0

@Xia:只是为了避免混淆,是我Edit_2解释是否正确? – MilkBottle

+0

是的,但您需要使用通过'new SQLiteConnection(new SQLitePlatformWinRT(),DBPath,false)'''获得的新'db'重新创建'Purchase'表。 –

+0

@Xia:在Edit_3中:是否可以使用新的SQLite.Net.SQLiteConnection(新的SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(),DBPath))没有错误?只想确认一下。 – MilkBottle