我想看看数据库中是否存在ID,在这种情况下,它是不可判定的。
要查看SQL查询的结果是否成功,我正在尝试使用rdata.fieldcount
即使输入ID(变量i)是-= 400(在数据库中不存在的ID号),字段计数似乎总是返回11。我也尝试过其他不可能的数字,例如100或800(数据库中只有1-5个项目)

var mySQLCommand = new SqlCeCommand("SELECT * FROM vets WHERE vetID = @ID", dbCon);
mySQLCommand.Parameters.AddWithValue("ID", i);
SqlCeDataReader rdata = mySQLCommand.ExecuteReader();
if (rdata.FieldCount >= 1)
{
    MessageBox.Show(" HAS ROWS "); go = true;
}
else
{
    MessageBox.Show("NO ROWS RETURNED");
}
MessageBox.Show("rdata FieldCount " + rdata.FieldCount + " i has value " + i);

有没有更优雅的方法来检查一个id在数据库中仍然有效并且没有被删除?
好啊。。在你叫我傻瓜之前…我猜fieldcount只是返回查询的fieldcount而不是fieldcount…啊……
但问题仍然存在,是否有一种优雅的方法可以知道数据库中是否仍然存在id?

最佳答案

如果使用的是数据读取器,则无法使用fieldcount获取行数。但如果你想让查询保持原样:

var mySQLCommand = new SqlCeCommand("SELECT * FROM vets WHERE vetID = @ID", dbCon);
mySQLCommand.Parameters.AddWithValue("ID", i);
SqlCeDataReader rdata = mySQLCommand.ExecuteReader();
if (rdata.read() )
{
    MessageBox.Show(" HAS ROWS ");
go = true;
}
else
{
    MessageBox.Show("NO ROWS RETURNED");
}
MessageBox.Show("rdata FieldCount " + rdata.FieldCount + " i has value " + i);

另一种检查方法是使用select count(*)查看它是否在表中,如果不存在,则为0。
var mySQLCommand = new SqlCeCommand("SELECT count(*) FROM vets WHERE vetID = @ID", dbCon);
            mySQLCommand.Parameters.AddWithValue("ID", i);
            SqlCeDataReader rdata = mySQLCommand.ExecuteReader();
int rowCount = 0;
if ( rdata.read() ) {
    rowCount = rdata[0];
}

关于c# - C#SqlCeDataReader rdata FieldCount,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6246786/

10-12 01:35