我对UniData和UniVerse数据库有一些(有限的)经验,现在想通过.NET框架使用它们。现在看来,与他们合作的方式是通过Rocket Software的U2 Toolkit for .NET。
由于我将访问其模式我不会事先知道的数据库,我需要知道如何查询数据库而不仅仅是数据(稍后会出现),但是有关数据库本身的信息,例如现有表的名称及其模式。
看起来Rocket(或者可能是以前拥有U2技术的IBM)在其某些实用程序中内置了一些功能,但我真的需要能够以编程方式执行此操作。
有什么想法吗?
答案 0 :(得分:5)
您可以通过以下方式使用U2 Toolkit for .NET访问U2数据库(UniData或UniVerse):
对于SQL Access,您需要规范化U2帐户(获取架构)。为此,您可以使用以下工具:
您可以使用U2 Toolkit for .NET的U2数据库提供程序for .NET(ADO.NET Provider)进行SQL访问
对于Native Access,您无需执行任何操作。
您可以使用U2 Toolkit for .NET的UO API进行Native Access。
安装产品时,SQL Access和Native Access上有大量示例代码。
最适合您的是安装U2 Toolkit for .NET V 1.2.1并开始开发一些代码。您可以运行几乎所有样本,因为它使用示例数据库('HS.SALES'UniVerse帐户和'演示'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);
}
}
看起来您的“演示”帐户未正常化。你能运行“sql> select * from SQLTables;“from TCL Command。你看到以下了吗? 如果没有,那么您可以执行以下操作之一:
从TCL命令运行命令行:
o Convert.sql STUDENT (Read Unidata Manual for convert.sql command)
o Grant privilege
o MIGRATE.SQL
答案 1 :(得分:1)
U2 Toolkit for .NET v1.3.0在GetSchema()API中支持“ForeignKeys”和“ForeignKeysColumns”。 见下图1,图2,图3和图4。