Informix数据库连接和加载到datatable不起作用

时间:2015-06-03 16:33:00

标签: c# asp.net datatable connection-string informix

我正在尝试连接到我的Web应用程序中的informix数据库并根据用户输入的项目代码检索数据并将其存储在数据表中以后我想从数据表中获取数据并将其显示在我的所选项目的文本框。 我的连接字符串中的一个odbc连接DRIVER = {IBM INFORMIX ODBC DRIVER}

    if (DropDownList4.Text == "***.**.**.**" || DropDownList4.Text == "***.**.**.**" || DropDownList4.Text == "***.**.**.**")
{
//string abilene = ConfigurationManager.ConnectionStrings["Abeliene"].ConnectionString.ToString();
 IfxConnection conn = new IfxConnection("User Id=****;Password=****;" +"Host=abkrisc1;Server=abkrisc1;" +"Service=1719;DB=circa119;");
     DataTable Abilene = new DataTable();
     Abilene.Columns.Add("item");
     Abilene.Columns.Add("desc");
     Abilene.Columns.Add("upc");
     Abilene.Columns.Add("itemupc");
     Abilene.Columns.Add("ctyp");
     Abilene.Columns.Add("citg");
     Abilene.Columns.Add("best");
     Abilene.Columns.Add("disp");
     Abilene.Columns.Add("mold");
     Abilene.Columns.Add("csel");
IfxCommand cmd;
cmd = new IfxCommand("Select t_item,t_idsc,t_upct,t_item_upc,t_ctyp,t_citg,t_best,t_disp,t_mold,t_csel from tsckcm907 where t_item = @item'");
     conn.Open();
  cmd.Parameters.Add("@item", IfxType.VarChar).Value = TxtItem.Text;
          try
              {
          IfxDataReader myreader = cmd.ExecuteReader();
          Abilene.Load(myreader);
          Response.Write(Abilene.Columns);
          con = true;     
              }
         catch (Exception ex)
              {
               throw ex;
               con = false;
              }
        if (con == true)
                {
                    while (Abilene.Rows.Count > 0)
                    {
                        TxtItem.Text = Abilene.Rows[0]["item"].ToString();
                        lbldesc.Text = Abilene.Rows[1]["desc"].ToString();
                    }
                }

我调试时得到的错误是在conn.open() - >错误[HY000] [Informix .NET提供程序] [Informix]服务器abkrisc1未在sqlhosts中列为dbserver名称。

我已经用sql数据库完成了类似的场景,但是我从未使用过informix。如果有人能帮助我使用这个代码非常棒,即使我使用的代码也是从ibm网站上找到的。

2 个答案:

答案 0 :(得分:0)

检查你的informix服务器配置(问题可能在你的sqlhosts file中,因为错误状态),它应该包含名为abkrisc1的服务器,在1719端口监听。

如果没问题,请检查您的DSN配置(这可能因操作系统而异 - 请查看this page了解详细信息。)

答案 1 :(得分:0)

Internet中的文档和错误消息具有误导性。 我有同样的错误,与此同时我找到了解决方法。

在安装Windows的Informix Client SDK并将ODBC驱动程序用于Informix(带有或不带有.NET)时,必须传递以下参数:

  1. 主机
  2. 服务器
  3. 服务或端口
  4. 协议
  5. 用户ID
  6. 密码

所有这些参数都是强制。该数据库是可选的。

您的连接字符串中缺少协议。如果缺少任何参数,则OBDC驱动程序在

下的注册表中搜索服务器。

32位驱动程序: HKLM \软件\ Wow6432Node \ Informix \ SQLHOSTS \服务器名称

64位驱动程序: HKLM \软件\ Informix \ SQLHOSTS \服务器名称

如果未在此处列出服务器,则会出现错误“ 服务器XYZ在sqlhosts中未作为数据库服务器名称列出。

请注意,只有Linux使用sqlhosts 文件。在Windows上,相同的数据存储在注册表中。

尽管错误消息和文档以及几个网页使您认为如此,但您无需创建sqlhosts文件。

您不需要使用IBM工具 SetNet32 为服务器生成条目。

您只需要将所有必需参数传递给ODBC驱动程序,错误就会消失。

IBM无法给出更智能的错误消息确实很可惜。