C#通过sqlsugar插入数据到postgresql

1.测试通过sql语句保存json数据,使用jsonb字段

复制代码
        public async Task<string> SavePostgreSQLTest(int count = 0,string files="")
        {
            string SqlStr = "";
            string jsonParamStr = JsonConvert.SerializeObject(new
            {
                count = count,
                file = $"{files}",
            });

         
            await Task.Run(() =>
        {
            SqlStr = "INSERT INTO \"MyObj\".mytable (id, name, age,jsonb_result ,json_result) VALUES (@id, @Name, @Age,@JsonbResult::jsonb,@JsonResult)";
            var parameters = new List<SugarParameter> {
        new SugarParameter("@id", 5),
        new SugarParameter("@Name", "周七"),
        new SugarParameter("@Age", 29),
                new SugarParameter("@JsonbResult", jsonParamStr),
        new SugarParameter("@JsonResult", jsonParamStr)
};

            try
            {
                SqlSugarHelperV1.ExcuteSqlString(SqlStr, parameters);
            }
            catch (Exception ex)
            {
                Log.Logger.Error($"LinkAsiaDB InitTireGlueingPLYDB 异常 {ex.Message} {ex.StackTrace}");
            }
        });

            return "jsonStr";
        }

2.sqlsugarhelper代码如下

复制代码
using SqlSugar;

namespace aaa.Helper.DB
{
    public static class SqlSugarHelperV1
    {
        private static SqlSugarScope _db;

        static SqlSugarHelperV1()
        {
            string mysqlConnectionStr = AppSettingsHelper.Configuration["DB:PostgreSQLConnStr"] ?? "";
            // 初始化数据库连接
            _db = new SqlSugarScope(new ConnectionConfig()
            { 
               
                ConnectionString = mysqlConnectionStr,// "server=localhost;port=3306;database=testdb;user=root;password=123456;",
                DbType = SqlSugar.DbType.PostgreSQL,
                IsAutoCloseConnection = true, // 自动关闭连接
             
              //  InitKeyType = InitKeyType.Attribute, // 从特性读取主键和自增列信息
                //ConfigureExternalServices = new ConfigureExternalServices()
                //{
                //    EntityService = (c, p) =>
                //    {
                //        // 设置列的默认值
                //        if (p.IsPrimarykey == false && p.PropertyName == "Id")
                //        {
                //            p.IsIgnore = true; // 忽略非主键的Id列
                //        }
                //    }
                //}
            });

            //// 设置AOP事件
            //_db.Aop.OnLogExecuting = (sql, pars) =>
            //{
            //    Console.WriteLine($"SQL: {sql}");
            //    Console.WriteLine($"Parameters: {string.Join(", ", pars.Select(p => $"{p.ParameterName}:{p.Value}"))}");
            //};

            _db.Aop.OnError = (exp) =>
            {
                Console.WriteLine($"PostgreSQL Error: {exp.Sql}");
                Console.WriteLine($"Error Message: {exp.Message}");
            };
        }

        // 获取数据库实例
        public static SqlSugarScope Db => _db;

        // 查询多个对象(使用 SQL)
        public static List<T> GetList<T>(string sql, object parameters = null) where T : class, new()
        {
            return _db.Ado.SqlQuery<T>(sql, parameters);
        }
        public static void ExcuteSqlString(string sql, object parameters = null)    
        {
              _db.Ado.ExecuteCommand(sql, parameters);
        }
    }
}

postgresql的数据库表字段

下面是查询jsonb字段中的json中key的value值

复制代码
 select *,jsonb_result ->'name' as name1 from "MyObj".mytable;
相关推荐
Fruit_Caller4 小时前
static
开发语言·c++
CSharp精选营9 小时前
我用 ASP.NET Core 做了个水稻病虫害检查系统
c#·毕业设计·.net core·码农刚子
唐青枫9 小时前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
下页、再停留9 小时前
【C#桌面客户端系列学习-2】在原来窗口基础上打开新窗口
c#·visual studio
Behavior9 小时前
Unity 手游 iOS Deep Link 唤醒全流程:从 URL Scheme / Universal Links 到 C# 层参数投递
c#·unity3d·游戏开发
我是唐青枫9 小时前
我用 C# 开发了一款电子发票自动整理工具
c#·.net
codigger9 小时前
ObjectSense:一门千行内核、把可靠性写进骨子里的面向对象脚本语言
开发语言·编程·编程语言
WAKU9 小时前
C#: 爸爸再爱我一回! 写在微软使用Rust重写GitHub Copilot之后的碎碎念
microsoft·rust·微软·c#·编程语言
唐青枫10 小时前
别把 WPF 写成一个 MainWindow:C#.NET Prism 模块化开发详解
c#·.net
用户7884773163410 小时前
WPF 数据绑定 5 个隐形坑:第 3 个 90% 的人都栽过
c#