UPDATE SQL 不同环境执行结果不一样
背景:1.前台:JQUERY 提交数据
2.后台:OWIN C# 处理接收数据
3.数据库: postgresql
============================================
问题描述: 后台接收到前台的数据,拼装一个 SQL 语句
update wbs_data
set work_data='{"proName":"科研GOOD","proCode":"科研项目001","unitProName":"No1","drawingNo":"734116","proAddress":"大庆",
"partsComponents":"让胡路锅底",
"checkContent":"<p><br/> 这是一测试图片<img src=\"/upload/8096b2b7d0a20cf4cd425f7a7f094b36adaf995e.jpg\" alt=\"\"
width=\"200\" height=\"200\" /> <br/></p>",
"checkOpinion":"检查意见:<br/>1.好<br/>2.很好<br/>3.非 常好","materialDocs":"原材料质量文件:<br/>1.测试文件1<br/>2.测试文件2",
"monitor":"","deputy":"","superEngineer":"","techLeader":"","date1":"","date2":"","date3":""}',work_state=1
where pwbs_id=124
我在后台C# 用 Npgsql执行时总是报错:invalid input syntax for type json
public static string executeSQL(string strSQL)
{
Console.WriteLine("{0}", strSQL);
string returnValue = string.Empty;
NpgsqlConnection connection = new NpgsqlConnection(getConnectionString());
NpgsqlCommand command = new NpgsqlCommand();
command.Connection = connection;
command.CommandText = strSQL;
try
{
connection.Open();
command.ExecuteNonQuery();
//returnValue = "{\"SUCCESS\":\"执行操作:'" + strSQL + "'成功!\"}";
Console.WriteLine("{0}","--------------------you are lucky----------------");
returnValue = "{\"SUCCESS\":\"操作成功!\"}"; }
catch (Exception err)
{
returnValue = "{\"ERROR\":\"发生以下错误:" + err.Message.ToString() + "\"}";
}
finally
{
connection.Close();
}
return returnValue;
}
奇怪的是,当我把这个拼装的SQL语句放在后台服务上PSQL 运行时,居然还通过了!
why??????
========================================================
经过测试发现:
我在获取生成JSON 串时,有个replace(/\s/g, ' ')(JS代码中)没有加,而当我加上时就不再有这个问题
然而,另一位大神给出最本质的原因:
我在PSQL 中执行SQL ,实际是做了强制转化,而我在C# 中运行是没有经过处理的应该把SQL变成这样:
update tablename set column = value::json where id = _id;
即我上面的代码应该转化为:
update wbs_data
set work_data='{"proName":"科研GOOD","proCode":"科研项目001","unitProName":"No1","drawingNo":"734116","proAddress":"大庆",
"partsComponents":"让胡路锅底",
"checkContent":"<p><br/> 这是一测试图片<img src=\"/upload/8096b2b7d0a20cf4cd425f7a7f094b36adaf995e.jpg\" alt=\"\"
width=\"200\" height=\"200\" /> <br/></p>",
"checkOpinion":"检查意见:<br/>1.好<br/>2.很好<br/>3.非 常好","materialDocs":"原材料质量文件:<br/>1.测试文件1<br/>2.测试文件2",
"monitor":"","deputy":"","superEngineer":"","techLeader":"","date1":"","date2":"","date3":""}'::json,work_state=1
where pwbs_id=124
UPDATE SQL 不同环境执行结果不一样的更多相关文章
- 如何判断一条sql(update,delete)语句是否执行成功
如何判断一条sql(update,delete)语句是否执行成功 catch (SQLException e) { } catch不到错误应该就成功了. ============== ...
- 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】
问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...
- 大型面试现场:一条update sql执行都经历什么?
导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"从一条update sql执行都经历什么开始,发散开一系列的问题,看看你能抗到第几 ...
- 修改数据库用户名--CMD环境执行有效
--CMD环境执行有效 --修改数据库用户名 select * from user$ where name='aa'; update user$ set name='bb' where name ...
- SQL语言逻辑执行顺序
SQL语言逻辑执行顺序 2012-12-18 16:18:13 分类: 数据库开发技术 查询的逻辑执行顺序 FROM < left_table> ON < join_conditio ...
- SQL select语句执行顺序
sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...
- 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他
初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...
- ORACLE数据库SQL语句的执行过程
SQL语句在数据库中处理过程是怎样的呢?执行顺序呢?在回答这个问题前,我们先来回顾一下:在ORACLE数据库系统架构下,SQL语句由用户进程产生,然后传到相对应的服务端进程,之后由服务器进程执行该SQ ...
- SQL SERVER 2012 执行计划走嵌套循环导致性能问题的案例
开发人员遇到一个及其诡异的的SQL性能问题,这段完整SQL语句如下所示: declare @UserId INT declare @PSANo VAR ...
随机推荐
- product of大数据平台搭建------CM 和CDH安装
一.安装说明 CM是由cloudera公司提供的大数据组件自动部署和监控管理工具,相应的和CDH是cloudera公司在开源的hadoop社区版的基础上做了商业化的封装的大数据平台. 采用离线安装模式 ...
- MATLAB进行无约束优化
首先先给出三个例子引入fminbnd和fminuc函数求解无约束优化,对这些函数有个初步的了解 求f=2exp(-x)sin(x)在(0,8)上的最大.最小值. 例2 边长3m的正方形铁板,四角减去相 ...
- SQL Server 2012安装——.net framework 3.5离线安装
前言 电脑用着一直很不舒服,所以就决定对电脑重新配置一番,在装数据库这里,可谓是屡装屡败.自己感觉太麻烦了,于是每次数据库装失败后,就重装系统,然后配置上网文档,这样一来,弄得自己挺恶心,这次很明显成 ...
- 【转载】GlusterFS六大卷模式說明
本文转载自翱翔的水滴<GlusterFS六大卷模式說明> GlusterFS六大卷說明 第一,分佈卷 在分布式卷文件被随机地分布在整个砖的体积.使用分布式卷,你需要扩展存储,冗余是重要或提 ...
- Codevs 1080 线段树练习(CDQ分治)
1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 一行N个方格,开始每个格子里都有 ...
- ICP备案接入商
1. 什么是ICP备案中的接入商 ICP备案系统中所说的接入商:是指为您提供虚拟主机.服务器托管或者专线接入的公司. 现在ICP备案的原则是“谁接入谁负责”,接入商一般都有自己的电子平台和工信部对接, ...
- C 语言实例 - 判断回文数
C 语言实例 - 判断回文数 判断一个数是否为回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=,则称n为一回文数:但若n=,则n不是回文数 ...
- Swift几行代码解决UITableView空数据视图问题
tableView空数据问题 一般项目中tableView若数据为空时会有一个提示示意图 为了更好的管理这种提示示意图,笔者利用extension进行了简单的拓展 解决思路 利用swift面向协议的特 ...
- Exadata Adaptive Scrubbing Schedule
1.为什么要引入"Hard Disk Scrub and Repair"特性 在exadata的11.2.3.3.0版本中,开始引进了"Automatic Hard Di ...
- 消息中间件 | 消息协议 | STOPM -- 《分布式 消息中间件实践》笔记
12年,STOMP1.2规范发布 简单的文本消息传输协议,提供一种可互相操作的连接格式,允许客户端与任意消息服务器进行交互 主要的概念 STOMP包含客户端和服务器,其中客户端指生产者或消费 ...