C#连接Informix数据库的问题

 更新时间:2020年03月02日 12:03:55   作者:aimevous  
这篇文章主要介绍了C#连接Informix数据库的问题,本文给大家介绍的非常详细,对大家的工作或学习具有一定的参考借鉴价值,需要的朋友可以参考下

引言

Informix 11 与之前版本的 Informix 相比,新增了很多特性,如 SQL 语句跟踪、非阻断的检查点、SDS 辅节点、星型连接、自动存储扩展、图形界面的管理工具 OAT 等,并且在性能上有了很大的提升。另外,由于 Informix 版本 7、9、10 已进入 EOS (End Of Support) 状态,所以很多 Informix 用户纷纷选择将 Informix 升级到版本 11。

Informix 数据库升级简介

Informix 数据库升级是指把使用的 Informix 数据库从低版本转化为高版本。对 Informix 数据库进行升级是一项系统工程,包括升级前的测试、升级前的检查、升级操作过程、升级后的测试、升级后的调优等。

Informix 数据库升级有两种类型:in-place 和 non-in-place。In-place 升级中,新版本的 Informix 使用的数据文件与旧版本的 Informix 相同,数据库管理员无需导出导入数据。Non-in-place 升级中,新版本的 Informix 使用的数据文件与旧版本的 Informix 不同,数据库管理员需要导出导入数据。

In-place 升级比较简单,升级操作时间短。non-in-place 升级比较复杂,升级操作时间长,所需的硬件资源多,风险较小。在一些情况下我们只能使用 non-in-place 升级,例如改变了硬件或操作系统。

两种类型的 Informix 数据库升级的示意图如图 1 所示。

图 1. 两种类型的 Informix 数据库升级的示意图

两种类型的 Informix 数据库升级的示意图

正文

最近在工作中遇到了需要连接Informix数据库的问题,在通过研究后发现了可以通过多种方式实现,我选择的是通过IBM Informix .NET Provider。该方式需要引用IBM.Data.Informix.dll。

using IBM.Data.Informix;
using System; 7 
namespace InformixLinkTest
{
 class Program
 {
  static void Main(string[] args)
  {
   try
   {
    // Open a connection
    IfxConnection conn = new IfxConnection(
    "Host=127.0.0.1;Service=9098;"
    + "Server=informixserver;Database=MyDatabase;"
    + "User ID=informix;password=MyPassword;db_locale=en_us.819"
    );
    conn.Open();
    IfxDataReader rd;
    using (IfxCommand cmd = conn.CreateCommand())
    {
     cmd.CommandText = "select * from simpletable";
     rd = cmd.ExecuteReader();
     rd.Read();
     do
     {
      if (rd.HasRows)
      {
       ///Assuming the table has two columns
       Console.WriteLine("{0}", rd[0]);
      }

     } while (rd.Read());
    }
    conn.Close();
   }
   catch (IfxException e)
   {
    Console.WriteLine(e.ToString());
    Console.ReadLine();
   }
 }
}

在调试过程中会发现出现异常(System.DllNotFoundException:“无法加载 DLL“IfxDotNetIntrinsicModule.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。”),具体如图:

通过提示可以看到找不到IfxDotNetIntrinsicModule.dll,我通过在安装Informix数据库的路径中找到了这个包放到了bin文件夹下后

就能正常运行了。

另一个问题就是在连接串中最开始db_locale的值我是给的utf8,按照这个也会出现异常情况,异常代码为(ERROR [HY000] [Informix .NET provider][Informix]Database locale information mismatch. ),截图如下:

最后将其设置为db_locale=en_us.819后就可正常连接到informix数据库。

总结

到此这篇关于C#连接Informix数据库的问题的文章就介绍到这了,更多相关C#连接Informix数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • c#实现摄像头拍照功能示例

    c#实现摄像头拍照功能示例

    这篇文章主要介绍了c#实现摄像头拍照功能示例,需要的朋友可以参考下
    2014-04-04
  • C#实现的JS操作类实例

    C#实现的JS操作类实例

    这篇文章主要介绍了C#实现的JS操作类,封装了C#关于javascript的弹出对话框、返回上一页、跳转等常用操作,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • C#怎么实现手机短信发送功能

    C#怎么实现手机短信发送功能

    为了个人信息的安全,很多网站都有短信发送的功能,究竟是怎么实现的呢?对于个人站长来说的话,通过使用sms短信通知api接口相对比较简单,下面小编给大家介绍具体实现过程,对c#怎么实现手机短信发送功能感兴趣的朋友一起学习吧
    2015-12-12
  • C#使用System.Threading.Timer实现计时器的示例详解

    C#使用System.Threading.Timer实现计时器的示例详解

    以往一般都是用 System.Timers.Timer 来做计时器,其实 System.Threading.Timer 也可以实现计时器功能,下面就跟随小编一起来学习一下如何使用System.Threading.Timer实现计时器功能吧
    2024-01-01
  • winform 调用摄像头扫码识别二维码的实现步骤

    winform 调用摄像头扫码识别二维码的实现步骤

    这篇文章主要介绍了winform 调用摄像头扫码识别二维码的实现步骤,帮助大家更好的理解和学习使用winform,感兴趣的朋友可以了解下
    2021-02-02
  • C#使用WebSocket实现聊天室功能

    C#使用WebSocket实现聊天室功能

    这篇文章主要为大家详细介绍了C#使用WebSocket实现聊天室功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#基于DBContext(EF)实现通用增删改查的REST方法实例

    C#基于DBContext(EF)实现通用增删改查的REST方法实例

    这篇文章主要介绍了C#基于DBContext(EF)实现通用增删改查的REST方法实例,是C#程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-10-10
  • C#中is与As运算符号的使用详解

    C#中is与As运算符号的使用详解

    本篇文章是对C#中is与As运算符号的使用进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 详解C# parallel中并行计算的四种写法总结

    详解C# parallel中并行计算的四种写法总结

    在C#中,parallel关键字可以用于并行计算。本文为大家总结了四种C# parallel并行计算的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-11-11
  • C#控制键盘按键的常用方法

    C#控制键盘按键的常用方法

    这篇文章主要介绍了C#控制键盘按键的常用方法,涉及C#针对键盘大写、滚动、数字的开启与锁定等功能,非常简单实用,需要的朋友可以参考下
    2015-05-05

最新评论