如何获取有关UniData/UniVerse数据库的架构信息?

ksi*_*und 3 universe unidata multivalue u2 u2netdk

我对UniData和UniVerse数据库有一些(有限的)经验,现在想通过.NET框架与它们一起工作.现在看来,与他们合作的方式是通过Rocket Software的U2 Toolkit for .NET.

由于我将访问其模式我不会事先知道的数据库,我需要知道如何查询数据库而不仅仅是数据(将在稍后出现),而是有关数据库本身的信息,例如现有的名称表及其模式.

看起来Rocket(或者可能是以前拥有U2技术的IBM)在其某些实用程序中内置了一些功能,但我真的需要能够以编程方式执行此操作.

有任何想法吗?

Raj*_*mar 5

您可以通过以下方式使用U2 Toolkit for .NET访问U2数据库(UniData或UniVerse):

  1. SQL Access(UCI服务器)
  2. 本机访问(UO服务器)

SQL Access

对于SQL Access,您需要规范化U2帐户(获取架构).为此,您可以使用以下工具:

  1. HS.ADMIN(适用于UniVerse数据库)(http://www.rocketsoftware.com/u2/products/u2-clients-and-db-tools/u2-resources/universe-11.1-clients/copy_of_uvodbc-v11r1.pdf/view)
  2. VSG(适用于UniData数据库)
  3. MDM(适用于UniVerse数据库和UniData数据库)

您可以使用U2 Toolkit for .NET的U2 Database Provider for .NET(ADO.NET Provider)进行SQL访问

本机访问

对于Native Access,您无需执行任何操作.

您可以使用U2 Toolkit for .NET的UO API进行Native Access.

示例代码和MSDN样式帮助

安装产品时,SQL Access和Native Access上有大量示例代码.

最适合您的是安装U2 Toolkit for .NET V 1.2.1并开始开发一些代码.您可以运行几乎所有样本,因为它使用示例数据库('HS.SALES'UniVerse帐户和'demo'UniData帐户)

您还可以阅读U2 Toolkit for .NET V 1.2.1的MSDN样式帮助,以获取诸如架构,帐户可访问/获取架构,示例代码等信息.

在此输入图像描述

我用UniData的模拟账户测试了U2Connection Class的GetSchema().这个对我有用.见下面的屏幕截图.

在此输入图像描述

private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            U2ConnectionStringBuilder conn_str = new U2ConnectionStringBuilder();
            conn_str.UserID = "user";
            conn_str.Password = "pass";
            conn_str.Server = "localhost";
            conn_str.Database = "demo";
            conn_str.ServerType = "UNIDATA";
            conn_str.Pooling = false;
            string s = conn_str.ToString();
            U2Connection con = new U2Connection();
            con.ConnectionString = s;
            con.Open();
            this.textBox2.AppendText("Connected......."+Environment.NewLine);
            this.textBox2.AppendText("CALLING .......   DataTable dt = con.GetSchema(\"Tables\");"+Environment.NewLine);
            DataTable dt = con.GetSchema("Tables");
            this.dataGridView1.DataSource = dt.DefaultView;
            con.Close();
                        }
        catch (Exception e2)
        {

            this.textBox2.AppendText(e2.Message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

看起来您的"演示"帐户未正常化.你能从TCL Command运行"sql> select*from SQLTables;"吗?你看到以下了吗?如果没有,那么您可以执行以下操作之一:

  1. 运行VSG工具(阅读VSG手册)
  2. 运行MDM工具(阅读MDM手册)
  3. 从TCL命令运行命令行:

     o    Convert.sql STUDENT (Read Unidata  Manual for convert.sql command)
     o    Grant privilege
     o    MIGRATE.SQL
    
    Run Code Online (Sandbox Code Playgroud)

在此输入图像描述