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

发布于 2024-12-09 02:36:28 字数 1127 浏览 1 评论 0原文

我搜索了该网站和其他网站以了解并消除此异常。很多答案,但我找不到“我错了”的地方。这是例外:

参数化查询 '(@listenr int,@stregko nvarchar(4000))SELECT * FROM Indkø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;
    }

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

霓裳挽歌倾城醉 2024-12-16 02:36:28

使用 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;

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;

夜巴黎 2024-12-16 02:36:28

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

尝试更改您的 C# 代码来分配参数,如下所示:

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

注意 NVarChar 中的“N”!

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!

玩套路吗 2024-12-16 02:36:28

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

Your SQL parameter is nvarchar - try using System.Data.SqlDbType.NVarChar in your C# code.

一个人的旅程 2024-12-16 02:36:28

从您的错误消息来看,尝试更改

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

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

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)
咽泪装欢 2024-12-16 02:36:28

您需要指定尺寸。

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

You need to specify the size.

com.Parameters.Add("@stregko", System.Data.SqlDbType.NVarChar,50).Value = stregko; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文