Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

postgres下插入只包含字符串的json会报错 #1770

Open
gxrsprite opened this issue Apr 3, 2024 · 2 comments
Open

postgres下插入只包含字符串的json会报错 #1770

gxrsprite opened this issue Apr 3, 2024 · 2 comments

Comments

@gxrsprite
Copy link

gxrsprite commented Apr 3, 2024

using Newtonsoft.Json.Linq;

internal class Program
{
    static void Main(string[] args)
    {
        IFreeSql fsql = new FreeSql.FreeSqlBuilder()
            .UseConnectionString(FreeSql.DataType.PostgreSQL, @"Host=127.0.0.1;Port=5432;Username=postgres;Password=123; Database=freesqltest;")
            .UseMonitorCommand(cmd => Console.WriteLine($"Sql:{cmd.CommandText}"))
            .UseNoneCommandParameter(true)
            .UseAutoSyncStructure(true) 
            .Build();

        fsql.CodeFirst.SyncStructure<MyTestObj>();

        fsql.Insert(new MyTestObj() { Json = "aaabbb" }).ExecuteAffrows();
    }
}

class MyTestObj
{
    public JToken Json { get; set; }
}

包:

image

freesql生成的sql:INSERT INTO "MyTestObj"("Json") VALUES('aaabbb')

可以正确插入的sql应该为 INSERT INTO "MyTestObj"("Json") VALUES('"aaabbb"')

update同理

不过数值类型没问题

@gxrsprite gxrsprite changed the title postgre下插入只包含字符串的json会报错 postgres下插入只包含字符串的json会报错 Apr 3, 2024
@2881099
Copy link
Collaborator

2881099 commented Apr 4, 2024

return string.Concat("'", param.ToString().Replace("'", "''"), "'::jsonb");

处理方式在这里,个人建议在使用当时上解决问题。

JToken 始终保存 Array 或 Json,基础类型可以选择 string 存储。

@gxrsprite
Copy link
Author

return string.Concat("'", param.ToString().Replace("'", "''"), "'::jsonb");

处理方式在这里,个人建议在使用当时上解决问题。

JToken 始终保存 Array 或 Json,基础类型可以选择 string 存储。

数值类型用起来没问题,只要针对string处理一下,JToken能存的数据就基本没问题了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants