MySql学习之 bit类型的查询和删除

今天项目从SqlServer转移到了MySql,转移过程中发现了一些问题,以前没遇到过,在网上查了查,总算是解决了,但是问题的根源还弄明白,暂且记录下来:

首先有个tb_paymentmethod表,表中有几条数据如下:

DAO层获取Model时这样:

if (row["IsDefault"] != null && row["IsDefault"].ToString().Trim()
!= "")
{
  model.IsDefault =
Convert.ToBoolean(Convert.ToInt32(row["IsDefault"]));
}

IsDefault为bool型,在插入数据时Mysql默认给的值是 0(false)  和 1(true);

因此导致下面的问题:

/// <summary>
/// 根据IsDefault获取,默认的、或非默认的实体集合List

/// </summary>
public static List<PaymentMethod>
GetListByIsDefault(bool Value)
{
  StringBuilder safesql = new
StringBuilder();
  safesql.Append("select ID,Name,IsDeleted,IsDefault from
tb_paymentmethod");
  safesql.Append(" where IsDefault="
+ Value + "
order by Name DESC");
  return
GetListBySql(safesql.ToString());
}

以往我都是这样写的:=‘" + Value + "‘ order
        在value两边带了引号,但是用了mysql后由于初始值变为了0/1,当传个bool
value=true,进来时,查询永远得不到想要的结果,去掉引号就可以了,网上给出的说法是:true和false是保留值;

那么问题又来了,我在做删除的时候:

/// <summary>
/// 根据名字和默认选项删除记录
///
</summary>
public static bool DeleteByName(string Name)

{
  StringBuilder safesql = new
StringBuilder();
  safesql.Append("delete from tb_paymentmethod
");
  safesql.Append("where [email protected] and IsDefault=‘"
+ false + "‘");
  MySqlParameter[] parameters =
{
                    new
MySqlParameter("@Name",Name)
                  };
  int rows =
DBUtility.DbHelperMySQL.ExecuteSql(safesql.ToString(), parameters);
  if
(rows > 0)
  {
    return true;
  }
  else
  {
    return
false;
  }
}

删除的时候,我先是没有在false两边加单引号,结果删除出了问题,但是当我加上引号时,OK没问题。

综上所述:对于Mysql的bit类型处理bool值时,由于true和false是保留值,查询时不加单引号,删除时要加(为什么?)。

MySql学习之 bit类型的查询和删除,布布扣,bubuko.com

时间: 2024-08-04 00:04:14

MySql学习之 bit类型的查询和删除的相关文章

我的MYSQL学习心得(七) 查询

在这个<我的MYSQL学习心得>系列里面,我一直都把MYSQL跟SQLSERVER进行比较,相互进行比较是学习一样东西比较好的方法 比较出大家的异同点,从而加深记忆 这一篇<我的MYSQL学习心得(七)>也是一样,相同的地方略略带过,不同的地方我会给出例子,谢谢大家的支持o(∩_∩)o 这一节主要介绍MYSQL里的基本查询(MYSQL官方参考手册) MySQL中select的基本语法形式: select 属性列表 from 表名和视图列表 [where 条件表达式] [group

我的MYSQL学习心得(八) 插入 更新 删除

这一篇<我的MYSQL学习心得(八)>将会讲解MYSQL的插入.更新和删除语句 同样的,只会讲解跟SQLSERVER不同的地方 插入 将多行查询结果插入到表中 语法 INSERT INTO table_name1(column_list1) SELECT (column_list2) FROM table_name2 WHERE (condition) INSERT INTO SELECT 在SQLSERVER里也是支持的 table_name1指定待插入数据的表:column_list1指定

MySQL学习分享--&gt;字符类型

字符类型 首先我们会讲到字符集的概念,字符集是指一些字符的集合,而字符编码是指一个字符的编码格式,因此两者的关系可以这样描述,例如:"使用Unicode编码的字符集",意思就是该字符集中的所有字符都是使用Unicode进行编码的. 接着说一下Unicode,它是一种字符编码,不是字符集,它为每种语言的每个字符设定了统一且唯一的二进制编码.在MySQL5.5及以上版本中支持ucs2.utf8.utf8mb4.utf16.utf32五种Unicode编码的字符集,而在MySQL5.5版本之

Mysql++学习(四)------模板查询

MySQL++提供的另外一个强大的功能就是模板查询,它提供像c语言中printf类似的机制:你提供给MySQL++一个包含固定串和变量占位符的查询字符串,之后可以替换这些占位符的变量. 下面例子显示了如何使用这一特性 1 #include <iostream> 2 #include <mysql++.h> 3 #include <errno.h> 4 #include <stdlib.h> 5 #include <stdio.h> 6 7 usi

MySQL学习总结(五) --- 表数据查询

查询数据记录,是指从数据库对象表中获取所要查询的数据记录,该操作可以说是数据最基本的操作之一,也是使用频率最高.最重要的数据操作. 1.单表数据记录查询 1.1.简单数据查询 SELECT field1,field2,…,fieldn FROM table_name,filed可以是表中所有的字段,也可以是部分字段. SELECT * FROM table_name ,从表中查询所有的数据.*符号可以代替所有的字段,但是这种方式不够灵活,只能按照表中字段的顺序固定进行显示,不能够随便改变字段的显

mysql学习笔记——对数据记录查询操作的补充(单表内查询)

select ... from ... where ... group by ... having ... order by ... limit...; (顺序固定) 1.select 指定所要检索的字段(列) select 后加distinct关键字,则可去除重复的记录,其中,重复的记录是指 所有字段值都相同的记录 2.from 指定查询数据表,可以是表名,也可以是别名 通常是在一个表达式不易读取时,对其取别名: 表达式 as 别名; 3.where 前置过滤条件 --- 将表数据过滤掉一部分

MySQL学习笔记11复制错误处理(二)删除不存在的行的问题

(1)问题情况 在master上删除某个数据表的某一行,而该行在slave上并不存在,则slave上的复制过程会出错. MySQL的log文件中发现如下错误信息: 2017-08-15T04:52:19.529509Z 13 [ERROR] Slave SQL for channel '': Could not execute Delete_rows event on table test.test; Can't find record in 'test', Error_code: 1032;

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

我的MYSQL学习心得(十四) 备份和恢复

原文:我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程