c# - 强制 MySQL Connector.NET 返回一个 bool 值

标签 c# mysql .net mysql-connector

如果我有一个包含 TINYINT(1) 列的表,并使用 DataReader 选择此列,MySQL 会创建一个 bool 列。

        var query = "SELECT column FROM table";
        using (var reader = ExecuteReader(query))
        {
            var schemaTable = reader.GetSchemaTable();
            var row = schemaTable.DefaultView[0];
            Assert.AreEqual(typeof(bool), row["DataType"]);
        }

但是,如果我有一个不起作用的查询。

        var query = "SELECT false";
        using (var reader = ExecuteReader(query))
        {
            var schemaTable = reader.GetSchemaTable();
            var row = schemaTable.DefaultView[0];
            Assert.AreEqual(typeof(bool), row["DataType"]);
        }

此测试失败,因为 DataType 是 System.Int64

是否可以强制查询返回 TINYINT(1) 值?总的来说,我让 Entity Framework 生成我的模型,并且我有一些 View 包含创建为 System.Int64 的 bool 列,我想这会解决问题。

最佳答案

您是否尝试过使用 CONVERT 或 CAST?

 var query = "SELECT CONVERT(0,TINYINT(1))"
 var query = "SELECT CAST(0 AS TINYINT(1))"

编辑:这似乎是 MySQL 中 CAST/CONVERT 函数的限制。一个建议的解决方案是创建一个函数来进行转换

 CREATE FUNCTION x_cast_to_tinyint(number bigint) RETURNS tinyint
 BEGIN    return number;
 END

然后调用函数

select   x_cast_to_tinyint(d.tiny_int*1) as tiny

引用:http://idiot-howto.blogspot.com/2008/07/mysql-cast-limitation.html#!/2008/07/mysql-cast-limitation.html

关于c# - 强制 MySQL Connector.NET 返回一个 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30033032/

相关文章:

.net - 没有新的 FxCop 抽象类型不应该有构造函数

C# 连接到端口 990 时 FTPS 卡住/超时

c# - 游戏开发 - 如何将 'command line arguments' 传递给 Unity 独立构建?

c# - MVC 自定义 View 模型问题

php - SQL Php 排序结果 Wordpress

php - MySQL 汇总值并将其插入表中

c# - 你如何找到调用者函数?

c# - 如何将此 XPath 查询转换为 LINQ to XML?

php - 使用 PHP 重复数据删除 mysql 结果

.net - 如何以符合系统标准的形式以编程方式从Windows剪贴板剪切/复制文件/从Windows剪贴板获取文件?