在Xamarin Forms中将日期时间保存到数据库

问题描述 投票:0回答:3

我想更新lastsync列,问题是数据无法正常保存。我使用了Convert.ToDateTime和DateTime.Parse,但数据仍然无法正常保存。我正在“01/01/0001 12:00:00”。我究竟做错了什么?

public DateTime LastUpdated { get; set; }

var current_datetime = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");

string ofretailer_group_sql = "UPDATE tblRetailerGroup SET LastUpdated = '" + DateTime.Parse(current_datetime) + "' WHERE RetailerCode = '" + retailerCode + "'";
await conn.ExecuteAsync(ofretailer_group_sql);
xamarin xamarin.forms
3个回答
1
投票

如果从TimeDate字段获取01/01/0001 12:00:00,则表示从未设置/更新。

我个人使用查询(?)参数来允许SQL语句字符串成为一堆永远不会更改的常量,然后您只需按照它们属于SQL语句的顺序为该查询分配参数:

Example:

const string ofretailer_group_sql = "UPDATE tblRetailerGroup SET LastUpdated = ? WHERE RetailerCode = ?";

await conn.ExecuteAsync(ofretailer_group_sql, new object[] { DateTime.UtcNow, retailerCode });

注意:我使用UtcNow删除DST和手机设备时区更改问题...


0
投票

您应该为文件管理创建依赖服务,以便在IOS和Android级别保存和获取数据。以下是如何在文件中保存和获取日期时间的代码。

PCL项目: - 创建界面

public interface IFileHelper
{

    void SaveLastUpdatedDateTimeForData(DateTime dateTime);

    DateTime GetLastUpdatedDateTimeForData();

}

IOS / Android项目: - 创建一个类以将数据保存到文件中。

[assembly: Dependency(typeof(FileHelper))]
namespace ABCD.iOS 
{
 public class FileHelper: IFileHelper 
{

  public void SaveLastUpdatedDateTimeForData(DateTime dateTime) 
{
   try {
    string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
    string filePath = Path.Combine(docFolder, "..", "Library", "updatetime.txt");
    File.WriteAllText(filePath, dateTime.Ticks.ToString());
   } catch (Exception ex) {
    Debug.WriteLine(ex.Message);
   }


  }

  public DateTime GetLastUpdatedDateTimeForData() 
{
   //bool status = false;
   string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
   string filePath = Path.Combine(docFolder, "..", "Library", "updatetime.txt");
   if (!File.Exists(filePath)) {
    return new DateTime(2000, 1, 1);
   }

   try {
    string content = File.ReadAllText(filePath);
    DateTime dt = new DateTime(long.Parse(content));
    return dt;
   } catch (Exception ex) {
    Debug.WriteLine("exception in GetLastUpdatedDateTimeForData : {0}", ex.Message);
    return DateTime.MinValue;
   }
  }

 }
}

在Client / PCL项目中调用依赖服务:

保存更新日期时间:

DependencyService.Get<IFileHelper>().SaveLastUpdatedDateTimeForData(DateTime.Now);

获取更新日期时间:

var lastUpdatedDateTime = DependencyService.Get<IFileHelper>().GetLastUpdatedDateTimeForData();

0
投票

它似乎是Date-String-Date的转换问题。

我会直接在Db中保存第一个DateTime.now并检查值是否正确保存。如果这有效,那么肯定是转换问题。然后你可以尝试以下解决方案。

我做这样的转换:

DateTime date = DateTime.ParseExact(current_datetime,“yyyy-MM-dd hh:mm:ss”,System.Globalization.CultureInfo.InvariantCulture);

© www.soinside.com 2019 - 2024. All rights reserved.