查询显示数据存在于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;
}
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