试图比较一个给定的ID与存储在数据库
问题描述:
你可以帮助我吗? 我真的不知道该怎么做。试图比较一个给定的ID与存储在数据库
我想要做的是,当我给它一个ID,比较它与存储在数据库中的另一个ID。
public Rubro GetRubroById(int GivenId)
{
Rubro rubro = new Rubro();
SqlCommand command = new SqlCommand
("SELECT * FROM Rubro WHERE GivenId = Id", con);
try
{
con.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
rubro.Id = reader.GetInt32(0);
rubro.Name = reader.GetString(1);
}
con.Close();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
return rubro;
}
答
的问题是,在您通过SQL GivenId
变量有GetRubroById
方法GivenId
变量没有关系。尽管它们有共同的名称,但它们存在于系统的不同部分。
您需要的值传递给使用参数的语句:
SqlCommand command = new SqlCommand("SELECT * FROM Rubro WHERE @GivenId = Id", con);
command.Parameters.Add("@GivenId", SqlDbType.Int);
command.Parameters["@GivenId"].Value = GivenId; // rename to givenId
你应该遵守.NET命名约定重命名GivenId
到givenId
。
+1
这实际上有效!非常感谢! –
答
您必须将值传递给SQL查询参数:
using(var command = new SqlCommand("SELECT * FROM Rubro WHERE Id = @GivenId", con))
{
try
{
command.Parameters.Add("@GivenId", SqlDbType.Int).Value = GivenId;
con.Open();
using(var reader = command.ExecuteReader())
while (reader.Read())
{
rubro.Id = reader.GetInt32(0);
rubro.Name = reader.GetString(1);
}
con.Close();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
你没有添加你的'SqlParameter' – Jonesopolis