首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PostgreSQL的.NET驱动程序Npgsql中参数对象的一个Bug

PostgreSQL的参数对象 IDataParameter para = db.GetParameter();  para.ParameterName = "@dm"; para.DbType = DbType.AnsiString...无赖,只有将调用存储过程的.NET程序代码一个一个排查,当注释掉 para.DbType = DbType.AnsiString; 的时候,程序居然能够正常运行通过了!...默认情况下,参数对象的DbType属性值是 DbType.String 难道 DbType.AnsiString==DbType.String ??...看了一下定义,它们是有区别的,DbType.AnsiString表示非Unicode的变长字符串,DbType.String 表示Unicode的变长字符串。...updatefundattention(text) 函数,注意下,实际上这个函数的参数不是text类型的,它实际上应该是 character 类型,PostgreSQL可以定义同名的函数,但函数可以有不同的参数类型,有点像C#

1.4K70

调用PostgreSQL存储过程,找不到函数名的问题

IDataParameter para = db.GetParameter();             para.ParameterName = "@jjdm";             para.DbType = DbType.AnsiString...citext) OWNER TO postgres; 昨天分析可能PostgreSQL的字符型参数不能使用AnsiString参数类型,需要使用String类型,但今天测试发现 para.DbType = DbType.String...ALTER FUNCTION updatefundattention2(character varying) OWNER TO postgres; 运行测试程序,不论 para.DbType = DbType.AnsiString...  ;  还是 para.DbType = DbType.String  ;  调用函数updatefundattention2 均能通过,故此得到结论: 目前自定义的 citext 类型.NET程序无法设置正确的...CDATA[       select * from UpdateFundAttention (#jjdm: String#)       ]]> 但这种修改方式会造成SqlServer与PostgreSQL

2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .net访问PostgreSQL数据库发生“找不到函数名”的问题追踪

    PostgreSQL是一个使用广泛的免费开源的数据库,与MySQL比较,它更适合复杂的企业计算任务,而MySQL在互联网领域应用更为广泛,究其原因,可能是PostgreSQL拥有支持最多的数据类型...LANGUAGE internal IMMUTABLE STRICT   COST 1; ALTER FUNCTION citext(character) OWNER TO postgres;  下面是调用使用C#...将上面的程序中第6行代码 para.DbType = DbType.AnsiString; 注释掉,程序运行通过,怀疑参数类型不能够设置成AnsiString,设置成下面的方式: para.DbType... = DbType.String; 程序依然运行不通过,抛出上面同样的错误,只有将这行代码注释掉才可以允许通过,思索很久仍然没有结果,于是昨天写了本文开头说的那篇文章(PostgreSQL的.NET驱动程序...3,“灵异现象”分析 前面说,将 para.DbType = DbType.AnsiString; 代码注释即可,也就是不对NpgsqlParameter.DbType 设置任何值,那么DbType的缺省值是什么呢

    1.7K70

    【C#与Redis】--C# 操作 Redis

    一、简介 C# 中通过 StackExchange.Redis 库可以方便地操作 Redis,实现高性能的数据缓存和存储。...通过使用 ConnectionMultiplexer 类,可以建立与 Redis 服务器的连接,并使用 IDatabase 接口执行各种操作,如字符串、哈希表、列表等的存储和检索。...二、链接 Redis 库 在C#中使用Redis库通常需要依赖StackExchange.Redis库。...此外,你可能需要处理异常和错误情况,确保与Redis的连接和操作是稳健可靠的。这只是一个简单的入门示例,StackExchange.Redis库提供了更多高级功能和选项,以满足不同的使用场景。...StackExchange.Redis提供了丰富的API,允许你以各种方式与Redis数据结构交互。你可以根据具体需求执行更高级的操作,例如事务、管道操作等。

    81410

    C#与.NET

    C#从本质上来说,它是一门编程语言。他不是.NET体系的一部分。虽然C#总是用来生成.NET平台的代码。C#语言不能孤立的使用,必须与.NET平台一起使用。这样才能大大提高开发效率。...相对于C++,Java等语言,C#是一种比较新的语言。它是在吸收了C++和Java语言在设计上的优点设计出来的。从一开始C#就被设计为面向对象的开发语言。...微软在设计的时候允许多种语言在.NET平台上进行开发,它定义的交互操作的意义是:一种语言定义的类能够直接与另一种语言定义的类进行交互,这包括类之间的相互通信,类的继承,相互使用对方的实例化对象,相互调用对方的代码...但在C#里,这是不行的。正是强数据类化才实现了多种语言的互操作性。 在C#中没有指针存在,无需手动释放内存。垃圾回收器是.NET用来进行内存管理的。垃圾回收器采用的方式是将所有的内存都分配到堆上。

    77820

    C#委托与事件

    Delegate ----   C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。...事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用于发布事件。这被称为 发布器(publisher) 类。...自定义事件 ----   C#中的事件处理实际上是一种具有特殊签名的delegate,象下面这个样子: public delegate void MyEventHandler(object sender...MyEventArgs类用来包含与事件相关的数据,所有的事件参数类都必须从System.EventArgs类派生。   ...定义"事件处理方法,它应当与delegate对象具有相同的参数和返回值类型"。 用event关键字定义事件对象,它同时也是一个delegate对象。

    1K60

    .NET对存储过程的调用抽象封装

    [王清培版权所有,转载请给出署名] 经过与DBA的沟通,他认为对存储过程的封装是有必要的,以他十几年的经验看,存储过程后期的移植是必不可少的。...IDataParameterFactory.CreateDbDataParameter( "OrderID", base.Dictionary["OrderID"], ParameterDirection.Input, DbType.String...IDataParameterFactory.CreateDbDataParameter( "UserID", base.Dictionary["UserID"], ParameterDirection.Input, DbType.String...IDataParameterFactory.CreateDbDataParameter( "Memo", base.Dictionary["Memo"], ParameterDirection.Input, DbType.String...总结:这里只是本人在封装存储过程的使用时的一些小小的经验,与大家分享一下,也算是一个抛砖引玉吧,可能大面积的使用会存在点未知的问题,不过框架就是这样才变的稳定的,希望对大家有点用,谢谢。

    68730
    领券