我正在尝试向数据库中添加新用户,但出现此错误:
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();
}
答案 0 :(得分:2)
您的插入命令完全错误-您需要在VALUES()
部分的SQL变量中删除所有这些单引号。
尝试一下:
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
值感到非常惊讶。