查询显示数据存在于sql服务器中的表中,但不显示任何受影响的行,并且始终返回false

本文关键字:显示 影响 false 返回 任何受 服务器 sql 数据 查询 存在 | 更新日期: 2023-09-27 18:21:22

我正在检查数据库中是否已经存在名称。当我在sql server中执行查询时,它显示数据,但在应用程序中,它显示,不影响任何行,并且总是返回false。

这是我的代码:

string productExtentionName = productExtensionEntryTextBox.Text;
bool doesProductNameExtentionExist = false;
doesProductNameExtentionExist = _aProductEntryManager.DoesProductNameAlreadyExist(productExtentionName);
         _aProduct.ProductNameExtention = productExtentionName;
        if (doesProductNameExtentionExist != true)
        {
            if (!string.IsNullOrEmpty(_aProduct.ProductNameExtention))
            {
                saveNewProduct = _aProductEntryManager.SaveProductNameExtention(_aProduct);
                if (saveNewProduct)
                {
                    MessageBox.Show("Product name extention saved successful");
                }
                else
                {
                    MessageBox.Show("Error saving product name extention");
                }
            }
            else
            {
                MessageBox.Show("Please enter a product specication/extention");
            }    
        }
        else
        {
            MessageBox.Show("Product name extention / specification already exists");
        }

这是我的网关

public bool DoesProductNameAlreadyExist(string productExtentionName)
    {
        _connection.Open();
        string query = string.Format("SELECT ProductNameExtention FROM ProductNameExtentionEntryTable WHERE ProductNameExtention='{0}'", productExtentionName);
        _command = new SqlCommand(query, _connection);
        int affectedRows = _command.ExecuteNonQuery();
        _connection.Close();
        if (affectedRows > 0)
        {
            return true;
        }
        return false;
    }

查询显示数据存在于sql服务器中的表中,但不显示任何受影响的行,并且始终返回false

int affectedRows = _command.ExecuteNonQuery();

这将返回-1;

在SqlDataReader上执行查询,并检查它是否有行。别忘了关闭阅读器。

SqlDataReader reader = _command.ExecuteReader();
if (reader.HasRows) MessageBox.Show("Yes"); else MessageBox.Show("No");
reader.Close();

尝试这个

     _command = new SqlCommand(query, _connection);
            da.SelectCommand = _command ;
            DataSet ds = new DataSet();
            da.Fill(ds);
          if (ds.Tables[0] != null)
            {
                if (ds.Tables[0].Rows.Count > 0)
                {
                //write your code
        return true;
                }
            }

使用执行标量而不是执行非查询,因为这是一个选择查询,并且选择查询不会返回由执行非查询返回的受影响行数。

因此,在这种情况下,它返回默认值0,因此您的方法返回false。

此外,您还可以修改查询以使用top 11,因为这里您只检查产品是否存在。

从ProductNameExtentionEntryTable中选择前1 1其中ProductNameExtention=@productExtentionName