–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 + ""