SQLException 未提供参数化查询 ###
我搜索了该网站和其他网站以了解并消除此异常。很多答案,但我找不到“我错了”的地方。这是例外:
参数化查询 '(@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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用
AddWithValue
方法而不是
com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar).Value = stregko;
Make use of
AddWithValue
methodrather than
com.Parameters.Add("@stregko", System.Data.SqlDbType.VarChar).Value = stregko;
SQL 查询需要
stregko
的 unicode 字符串,但您提供了一个非 unicode 字符串。尝试更改您的 C# 代码来分配参数,如下所示:
注意 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:
Note the "N" in NVarChar!
您的 SQL 参数是
nvarchar
- 尝试在 C# 代码中使用System.Data.SqlDbType.NVarChar
。Your SQL parameter is
nvarchar
- try usingSystem.Data.SqlDbType.NVarChar
in your C# code.从您的错误消息来看,尝试更改
:
as from your error message, try to change:
with
您需要指定尺寸。
You need to specify the size.