SQLException未提供的参数化查询###

时间:2011-10-11 09:04:07

标签: c# .net sql-server sqlexception

我搜索了这个网站,以及其他网站了解并摆脱了这个异常。很多答案,但我找不到“我错了”。这是例外:

  

参数化查询'(@ lister int,@ stregko nvarchar(4000))SELECT   *FROMIndkøbsliste'需要参数'@stregko',这是未提供的。

这是我的代码。

    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;
    }

5 个答案:

答案 0 :(得分:2)

使用AddWithValue方法

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);

而不是

com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar).Value = stregko;

答案 1 :(得分:2)

SQL查询需要stregko的unicode字符串,但是您提供了非unicode字符串。

尝试更改c#代码以分配参数,如下所示:

com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar).Value = stregko; 

注意NVarChar中的“N”!

答案 2 :(得分:1)

您的SQL参数为nvarchar - 尝试在C#代码中使用System.Data.SqlDbType.NVarChar

答案 3 :(得分:1)

从您的错误消息中,尝试更改:

com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar)

com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar)

答案 4 :(得分:0)

您需要指定尺寸。

com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar,50).Value = stregko;