背景: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 不同环境执行结果不一样的更多相关文章

  1. 如何判断一条sql(update,delete)语句是否执行成功

    如何判断一条sql(update,delete)语句是否执行成功 catch  (SQLException    e)  {  }  catch不到错误应该就成功了.   ============== ...

  2. 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】

    问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...

  3. 大型面试现场:一条update sql执行都经历什么?

    导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"从一条update sql执行都经历什么开始,发散开一系列的问题,看看你能抗到第几 ...

  4. 修改数据库用户名--CMD环境执行有效

    --CMD环境执行有效 --修改数据库用户名 select * from user$ where name='aa';   update user$ set name='bb' where name  ...

  5. SQL语言逻辑执行顺序

    SQL语言逻辑执行顺序 2012-12-18 16:18:13 分类: 数据库开发技术 查询的逻辑执行顺序 FROM < left_table> ON < join_conditio ...

  6. SQL select语句执行顺序

    sql查询原理和Select执行顺序 关键字: 数据库 一 sql语句的执行步骤 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2) 语义分析,检查语句中涉及的所有数据库对象是 ...

  7. 面试官问你MyBatis SQL是如何执行的?把这篇文章甩给他

    初识 MyBatis MyBatis 是第一个支持自定义 SQL.存储过程和高级映射的类持久框架.MyBatis 消除了大部分 JDBC 的样板代码.手动设置参数以及检索结果.MyBatis 能够支持 ...

  8. ORACLE数据库SQL语句的执行过程

    SQL语句在数据库中处理过程是怎样的呢?执行顺序呢?在回答这个问题前,我们先来回顾一下:在ORACLE数据库系统架构下,SQL语句由用户进程产生,然后传到相对应的服务端进程,之后由服务器进程执行该SQ ...

  9. SQL SERVER 2012 执行计划走嵌套循环导致性能问题的案例

    开发人员遇到一个及其诡异的的SQL性能问题,这段完整SQL语句如下所示: declare @UserId             INT declare @PSANo              VAR ...

随机推荐

  1. [51nod1212]最小生成树模板

    解题关键:注意下标 解法一:prim算法 #include<bits/stdc++.h> #define maxv 1002 #define maxm 50002 #define INF ...

  2. 安装yum在ubnutu上

    安装yum在ubnutu上1:首先检测是否安装了build-essential程序包 apt-get install build-essential2.安装yumapt-get install yum ...

  3. hadoop-maven项目打包成可执行的jar

    环境: cdh5.1.0 jdk1.7 <build> <plugins> <!--指定JDK为1.7 --> <plugin> <groupId ...

  4. 21 、GPD-PSL-VCF

    https://genome.ucsc.edu/FAQ/FAQformat.html#format9 1.Variant Call Format(VCF) Example ##fileformat=V ...

  5. JsonPath的用法

    有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...

  6. 35.windows提权总结

    本文参考自冷逸大佬的博客,源地址在这里:https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/ windows提 ...

  7. hdu1079

    #include<cstdio> #include<iostream> #include<cstring> using namespace std; int mai ...

  8. 拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)

    这是到动态规划的题目,属于有顺序的0 1 背包问题: 代码: #include<stdio.h> #include<string.h> ][]; //d[i][j] ]; in ...

  9. Java Script 学习笔记 -- Ajax

    AJAX 一 AJAX预备知识:json进阶 1.1 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON是用字符串来表示Javas ...

  10. Web——页面“传值、赋值”与页间“传值”

    前言 前期我们学习C/S开发的时候,采用三层架构,U层的参数在每个层之间传来传去,那么现在我们接触到的B/S,在Web前端是如何与后台进行传值赋值呢?由于本人是菜鸟一枚,下面写的不恰当的地方,望路过的 ...