Невозможно проверить, существует ли время в полях времени буксировки (MySQL, C #, приложение windowsform) - PullRequest
0 голосов
/ 22 мая 2018

У меня есть два поля времени в базе данных MySQL.Мне нужно проверить перед добавлением нового времени, я пытаюсь этот код.

private bool TimeFound()
{
    MySqlConnection cnn = new MySqlConnection(DB.GetCS("127.0.0.1", "3306",
        "db", "root", "password", "utf8"));
    string query = "SELECT time.From, time.To FROM db.time WHERE " +
        "(time.From, time.To) NOT IN (SELECT time.From, time.To FROM db.time " +
        "WHERE (time.From = @From AND time.To = @To";
    cnn.Open();
    MySqlCommand command = new MySqlCommand(query, cnn);
    command.Parameters.AddWithValue("@From", dateTimePicker1.Value.ToString("HH:mm:ss"));
    command.Parameters.AddWithValue("@To", dateTimePicker2.Value.ToString("HH:mm:ss"));
    object result = command.ExecuteScalar();
    if (result == null)
    {
        return false;
    }
    else
    {
        return true;
    }
}

Каждый раз, когда я пытаюсь вызвать функцию, я получаю сообщение об ошибке в этой строке.

object result = command.ExecuteScalar();

MySql.Data.MySqlClient.MySqlException: «у вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '' в строке 1 '

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Как мы уже рассмотрели, вы пропустили две закрывающие скобки, но ваш запрос кажется слишком сложным.

SELECT time.From, time.To 
FROM db.time 
WHERE (time.From, time.To) NOT IN (
   SELECT time.From, time.To 
   FROM db.time 
   WHERE (time.From = @From AND time.To = @To)
)

не должно иметь результатов, которые каким-либо образом отличаются от

SELECT time.From, time.To 
FROM db.time 
WHERE (time.From = @From AND time.To = @To)

Каждый запрос вида

SELECT x, y FROM a WHERE (x, y) IN (SELECT x, y FROM a WHERE x = x1 AND y = y1)

совпадает с

SELECT x, y FROM a WHERE x = x1 AND y = y1
0 голосов
/ 22 мая 2018

спасибо за комментарий от Uueerdo, отсутствует 2)) в конце запроса, я не знаю, как мне этого не хватает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...