mysql bit类型查不出_MySql学习之 bit类型的查询和删除

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

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

20180926083126613521.png

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);

因此导致下面的问题:

///

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

///

public static List

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是保留值;

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

///

/// 根据名字和默认选项删除记录

///

public static bool DeleteByName(string Name)

{

StringBuilder safesql = new

StringBuilder();

safesql.Append("delete from tb_paymentmethod

");

safesql.Append("where Name=@Name 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是保留值,查询时不加单引号,删除时要加(为什么?)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值