尝试将给定 ID 与存储在数据库中的 ID 进行比较
Trying to compare a given ID with one stored on the DB
你能帮我解决这个问题吗?
实在想不通怎么办。
我想做的是,当我给它一个 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 查询参数:
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);
}
}
问题是您传递的 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
。
你能帮我解决这个问题吗? 实在想不通怎么办。
我想做的是,当我给它一个 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 查询参数:
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);
}
}
问题是您传递的 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
。