Reputation: 209
I've searched this site, and other sites to understand and get rid of this exception. Many answers, but I can't find where "I'm wrong". This i the exception:
The parameterized query '(@listenr int,@stregko nvarchar(4000))SELECT * FROM Indkøbsliste' expects the parameter '@stregko', which was not supplied.
And here i my code.
public Indkøbsliste findIndkøbslisteStregkode(string stregko, int listenr)
{
Indkøbsliste inl = new Indkøbsliste();
SqlConnection myCon = DBcon.getInstance().conn();
myCon.Open();
string query = "SELECT * FROM Indkøbsliste WHERE Stregkode = @stregko AND ListeNr = @listenr";
SqlCommand com = new SqlCommand(query, myCon);
com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar).Value = stregko;
com.Parameters.Add("@listenr", System.Data.SqlDbType.Int).Value = listenr;
SqlDataReader dr = com.ExecuteReader();
if (dr.Read())
{
inl.ListeNr = dr.GetInt32(1);
inl.Stregkode = dr.GetString(2);
inl.Navn = dr.GetString(3);
inl.Antal = dr.GetInt32(4);
inl.Pris = dr.GetDecimal(5);
}
myCon.Close();
return inl;
}
Upvotes: 1
Views: 7582
Reputation: 176936
Make use of AddWithValue
method
com.Parameters.AddWithValue("@stregko", stregko);
or
com.Parameters.Add("@stregko", SqlDbType.NVarChar, 50).Value = stregko;
or
SqlParameter parameter = new SqlParameter("@stregko", SqlDbType.NVarChar, 50);
parameter.Value = stregko;
com.Parameters.Add(parameter);
rather than
com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar).Value = stregko;
Upvotes: 2
Reputation: 94643
You need to specify the size.
com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar,50).Value = stregko;
Upvotes: 0
Reputation: 44605
as from your error message, try to change:
com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar)
with
com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar)
Upvotes: 1
Reputation: 12966
Your SQL parameter is nvarchar
- try using System.Data.SqlDbType.NVarChar
in your C# code.
Upvotes: 1
Reputation: 4247
The SQL query expects a unicode string for stregko
but you provide a non-unicode string.
Try to change your c# code for assigning the parameter as follows:
com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar).Value = stregko;
Note the "N" in NVarChar!
Upvotes: 2