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

时间:2017-02-27 04:35:37

标签: c# mysql

我的if条件声明是否合适?我正在尝试阅读table column的值,如果它包含值1,那么它将获得我正在搜索的图书的值。

代码没有任何错误。它编译。<​​/ p>

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.");
}

2 个答案:

答案 0 :(得分:1)

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

if (cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString().Equals(1))
  1. cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString() =&gt;这是一个字符串。也许它是&#34; 1&#34;
  2. 1是一个整数(int)
  3. =&GT;为了使其正常工作,您应该将1(int)更改为&#34; 1&#34; (字符串)像这样:

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

答案 1 :(得分:0)

试试这个。它假定数据库字段类型是数字字段。作为旁注,使用SELECT *是不好的。你应该只检索你需要的东西。

您要检查结果== 1还是结果&gt; 0?在这种情况下,图书馆可能有多本图书,我建议您查看&gt; 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#中的所有内容都继承自“object”类型。 .Equals()接受一个对象,而不是字符串或整数等。这就是为什么你没有得到一个compliation错误。