C# DataTable字段上的If语句未返回true

C# DataTable字段上的If语句未返回true,c#,mysql,C#,Mysql,我的if条件语句正确吗?我试图读取我的表列的值,如果它包含值1,那么它将获得我正在搜索的书的值 代码没有任何错误。它编译 string sql = "SELECT * FROM tbladdbook WHERE fBarcodeNo LIKE '" + txtBARCODE.Text.Trim() + "%'"; cfgotcall.engageQuery(sql); if (cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString().Equals(1

我的if条件语句正确吗?我试图读取我的表列的值,如果它包含值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.");
}

试试这个。它假定数据库字段类型为数字字段。作为旁注,使用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接受一个对象,而不是字符串或整数等。这就是为什么不会出现兼容错误。

如果语句因为比较字符串和int而不起作用,那么它总是返回false

if (cfgotcall.tbl.Rows[0]["fCurrentCopies"].ToString().Equals(1))
cfgotcall.tbl.Rows[0][fCurrentCopies].ToString=>它是一个字符串。也许是1 1是整数int =>要使其正常工作,应将1 int更改为1字符串,如下所示:

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

您正在尝试检查字符串是否等于整数。它们是不同的数据类型。什么是cfgotcall?显示更多code@u不需要更多的代码。很明显为什么它不起作用。我应该使用.Contains吗?旁注:在任何情况下都不应该从未初始化的用户输入构建查询,这是一个安全漏洞-查找SQL注入。不是数字而是浮点,我在考虑检查<0,如果FCurrentCopy为-1,它将无法借用该书。我在DBNull中遇到错误。Equalsresult,它说非静态字段、方法或属性'object.Equalsobject'@user3415509'需要对象引用。抱歉,我已经有一段时间没有使用SQL了。我现在已经更新了。我建议FCurrentCopy应该是一个整数值,除非您希望存储一半的书籍!:我之所以使用float,是因为我有一个Update方法,其中包含一个不同的sql,所以我需要使用float-heheheside注意:从未初始化的输入构建一个查询是个坏主意,因为存在sql注入攻击的风险。