【VS2012】VS利用 PostgreSql查询错误: ERROR: 42883: operator does not exist: integer ~~ unknown

–VS 后端调用 PostgreSql 出错:
ERROR: 42883: operator does not exist: integer ~~ unknown
利用断点发现数据库语句查询正确,但是数据库 NpgsqlConnection 类型的conn.Close();走不进去

–原因:
postgresql传入参数类型不匹配的原因

–什么是postgresql传入参数类型不匹配
原先定义MonthLW为string字符串类型 ;而查询的表中mon是int类型→导致在sql语句中,要利用字符串类型的MonthLW去匹配int类型的mon→这两者不能匹配,所以会出错

string MonthLW = context.Request.QueryString["MonthLW"];

select *  from LWstatistic2 where mon like '%" + MonthLW+ "%' 

– 解决办法
(1)尝试修改参数类型→利用cast函数:(以下还是会报错,原因是查询字段为字符串)

 string sql = "select * from LWstatistic2 where cast(mon as char) like '%" + MonthLW + "%'"

–利用转换参数类型达到查询目的是,还是要将查询字段转换为一致类型:即我需要将字符串改为整型:

 string MonthLW = context.Request.QueryString["MonthLW"];
 int monint = int.Parse(MonthLW);
            
 string sql = "select * from LWstatistic2 where cast(mon as char) like '%" + monint + "%' "

(2)不用like查询语句:like模糊型查询,同事指点说最好不要用,特别是指定的不重复的字段,可以直接用=;另外SQL语句中尽量少用功能性查询语句,会影响查询速度。

string MonthLW = context.Request.QueryString["MonthLW"];
int monint = int.Parse(MonthLW);

  string sql = "select *  from LWstatistic2 where mon = " + monint + ""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值