Сервер с разным форматом даты и времени от клиента - рекурсивно изменить формат даты и времени клиента - PullRequest
0 голосов
/ 18 июня 2020

У меня есть сервер с форматом даты и времени, отличным от моего клиента. В моем клиенте он использует PM / AM, а мой сервер использует формат 24H. Когда я пытаюсь использовать переменную DateTime в C# и тип данных DateTime на моем SQL сервере. На моем SQL сервере 2020-06-16 14: 54: 33.937 Когда я пытаюсь запустить на сервере P C, все в порядке. но когда я пытаюсь запустить на клиенте мою дату на SQL сервере, он возвращает int32 (другой формат).

Я использую dapper для SQL Server helper. Это моя функция для выбора моей таблицы

    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 Ответ

3 голосов
/ 18 июня 2020

Поскольку вы говорите, что столбец 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.

Если предположить, что ваш save код также не использовал параметры: тогда - данные в базе данных теперь просто неверны. Решение: использовать параметры ; это исправляет:

  • SQL проблемы с внедрением (безопасность)
  • проблемы с культурой (i18n / l10n), такие как форматирование (правильность)
  • повторное использование плана запроса к базе данных ( производительность)
  • повторное использование стратегии dapper (производительность)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...