与客户端的格式日期时间不同的服务器-递归更改客户端的格式日期时间

时间:2020-06-18 08:52:58

标签: c# sql-server windows dapper sqlite-net

我的服务器的日期时间格式与客户端不同。在我的客户中,它使用PM / AM,而我的服务器使用24H格式。当我尝试在C#中使用DateTime变量并在SQL Server中使用数据类型DateTime时。在我的SQL Server 2020-06-16 14:54:33.937 中,当我尝试在服务器PC中运行时就可以了。但是当我尝试在客户端中运行我在SQL Server中的日期时,它将返回int32(不同格式)。

我将 dapper 用于SQL Server帮助程序。这是我选择表格的功能

    private static void get_chat()
    {
        ConnectDB();

        string sql = "SELECT * FROM chat where to_user = " + MyLogin.id + " OR from_user = " + MyLogin.id;

        var queryResult = cnn.Query<SQLServer_Chat>(sql);
        SQLServer_Olah.Olah_Chat(queryResult);
        ArrayList list_id = SQLServer_Olah.List_chat_id(queryResult);

        CloseDB();

        get_chat_det(list_id);

    }

这是我的SQLServer_Chat

class SQLServer_Chat
{
    public int id_chat { set; get; }
    public int to_user { set; get; }
    public int from_user { set; get; }
    public string last_chat { set; get; }
    public int to_unread { set; get; }
    public int from_unread { set; get; }
    public DateTime created_at { set; get; }
    public DateTime last_chat_time { set; get; }
    public string to_name { set; get; }
    public string from_name { set; get; }
}

希望任何人都可以帮助我解决这个错误,谢谢!!

1 个答案:

答案 0 :(得分:3)

由于您说数据库中的列为datetime,所以坦率地说:格式不存在。我期望的问题是您不正确地保存 ,因为您没有使用参数。显示的查询实际上应该是:

var queryResult = cnn.Query<SQLServer_Chat>(
    "SELECT * FROM chat where to_user = @id OR from_user = @id", new { MyLogin.id });

匿名类型(new { ... })告诉Dapper添加一个名为id的参数,其类型和值是通过评估MyLogin.id获得的。

如果我们假设您的保存代码不使用参数:则-数据库中的数据现在完全不正确。解决方案:使用参数;此修复程序:

  • SQL注入问题(安全性)
  • 文化(i18n / l10n)问题,例如格式(正确性)
  • 数据库查询计划重用(性能)
  • dapper策略重用(性能)