繁体   English   中英

如果DataTable字段上的if语句未返回true

[英]If statement on DataTable field doesn't return true

我的if条件语句正确吗? 我正在尝试读取table column的值,如果它的值包含1那么它将获得我正在搜索的书的值。

该代码没有任何错误。 它编译。

string sql = "SELECT * FROM tbladdbook WHERE fBarcodeNo LIKE '" + txtBARCODE.Text.Trim() + "%'";
cfgotcall.engageQuery(sql);

if (cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString().Equals(1))
{
    txtTITLE.Text = cfgotcall.tbl.Rows[0][1].ToString();
}
else 
{
    MessageBox.Show("Book already borrowed.");
}

If语句不起作用,因为您将stringint进行比较。 因此它总是返回false。

if (cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString().Equals(1))
  1. cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString() =>这是一个字符串。 也许是“ 1”
  2. 1是整数(int)

=>为使其正常工作,应将1(int)更改为“ 1”(字符串),如下所示:

if (cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString().Equals("1"))

尝试这个。 假定数据库字段类型是数字字段。 附带说明,使用SELECT *是不好的。 您应该只检索所需的内容。

您要检查结果== 1还是结果> 0? 在这种情况下,图书馆可能有多本书,建议您检查> 0

string sql = "SELECT * FROM tbladdbook WHERE fBarcodeNo LIKE '" + txtBARCODE.Text.Trim() + "%'";
cfgotcall.engageQuery(sql);

var result = cfgotcall.tbl.Rows[0]["fCurrentCopies"];
if (DBNull.Value.Equals(result) || result == null) { result = 0; }
if ((int)result == 1)
{
    txtTITLE.Text = cfgotcall.tbl.Rows[0][1].ToString();
}
else 
{
    MessageBox.Show("Book already borrowed.");
}

附带说明一下,C#中的所有内容都继承自“对象”类型。 .Equals()接受一个对象,而不是一个字符串或一个整数等。这就是为什么您不会得到一个编译错误的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM