Ошибка преобразования при преобразовании значения varchar в бит типа данных - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь добавить нового пользователя в свою базу данных, но я получаю эту ошибку:

System.Data.SqlClient.SqlException: 'Преобразование не удалось при преобразовании значения varchar' @actief 'в бит типа данных.'

Я не понимаю почему, потому что Actief имеет тип Bit в моей базе данных.

Я попытался внести изменения ниже, но это ничего не решило

cmd.Parameters.Add("@actief", SqlDbType.Bit);

Код:

public void InsertUser(Gebruiker user)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = CONNECTION_STRING;
    con.Open();

    SqlCommand cmd = new SqlCommand();

    // set Connection Property  of Command object
    cmd.Connection = con;
    cmd.CommandType = System.Data.CommandType.Text;

    cmd.CommandText = "INSERT INTO dbo.Gebruiker (Naam, Voornaam, Rol, Actief, Adres, Gemeente, Land, Functie) " +
                "VALUES ('@naam', '@voornaam', '@rol', '@actief', '@adres', '@gemeente', '@land', '@functie')";

    // assign values
    cmd.Parameters.AddWithValue("@naam", user.Naam);
    cmd.Parameters.AddWithValue("@voornaam", user.Voornaam);
    cmd.Parameters.AddWithValue("@rol", user.Rol);
    cmd.Parameters.AddWithValue("@actief", user.Actief);
    cmd.Parameters.AddWithValue("@adres", user.Adres);
    cmd.Parameters.AddWithValue("@gemeente", user.Gemeente);
    cmd.Parameters.AddWithValue("@land", user.Land);
    cmd.Parameters.AddWithValue("@functie", user.Functie);

    cmd.ExecuteNonQuery();
    con.Close();
}

1 Ответ

2 голосов
/ 08 мая 2019

Ваша команда вставки неверна - вам нужно удалить все эти одинарные кавычки из переменных SQL в разделе VALUES().

Попробуйте это:

cmd.CommandText = "INSERT INTO dbo.Gebruiker (Naam, Voornaam, Rol, Actief, Adres, Gemeente, Land, Functie) " +
                  "VALUES (@naam, @voornaam, @rol, @actief, @adres, @gemeente, @land, @functie)";

С одинарными кавычками вы отправляете строковые литералы (вместо значений этих переменных!) В вашу команду INSERT - и неудивительно, что T -SQL не может преобразовать '@actief' в BIT значение .....

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