c# - 从 bool 值检索值失败

标签 c# mysql

mConn = new MySqlConnection("Persist Security Info=False; server=localhost;database=FichasReparacao;uid=root");
mConn.Open();
MySqlCommand command = new MySqlCommand("SELECT blacklist FROM Cliente where ID =@id", mConn);
command.Parameters.AddWithValue("@id", tbid.Text);

//Executa a Query SQL
blist = Convert.ToBoolean(command.ExecuteNonQuery());
MessageBox.Show(Convert.ToString(blist));
mConn.Close();

我有这段代码,我正在测试它,为此我从表 Cliente 中选择黑名单( bool )值,其中 ID 是我选择的。并在消息框中显示它,事情是,我有 0 、 1 和 null 值,当我尝试在消息框中显示它时,它总是显示“TRUE”。我做错了什么?

最佳答案

您在 SELECT 查询上使用 ExecuteNonQuery,这不起作用,因为 ExecuteNonQuery 返回的唯一结果此类语句的值为-1。 (请参阅提供的链接中的备注部分)

如果您的查询仅返回一行,则:

blist = Convert.ToBoolean(command.ExecuteScalar());

但是,需要采取一些预防措施。如果查询未返回任何内容(即未找到 ID),则转换为 bool 值将失败,因为 ExecuteScalar将返回 null。

所以正确的做法是:

object result = command.ExecuteScalar();
blist = (result == null ? false : Convert.ToBoolean(result));

如果对您来说更有意义,您可以将 null 情况下的默认值更改为 true 而不是 false

关于c# - 从 bool 值检索值失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16612388/

相关文章:

c# - VS 2010 - 输出窗口 - 如何启用 "find message in code"按钮?

c# - 如何在 C# 中创建转发方法调用的代理对象?

C# DataGridViewButtonCell 设置按钮文字

mysql - 如何让这个个人最佳高分 MySQL 查询更加高效?

mysql - 如何将参数传递给Pentaho Report(.prpt)以便sql查询可以动态运行以在运行时生成报告

c# - 强制看不见的 PictureBox 加载图像

c# - 文字 Uri 请求

PHP:加载相似的结果

php mysql select 下拉选择和不同的查询

mysql - 在 MySQL 批量插入上显示重复项