我正在使用一个多值数据库,该数据库当前正在使用IBM U2(现在是Rocket Software)的UniObjects软件连接到Universe 9. +系统。这不是由Rocket Software for Universe 10+和11+系统推出的UniObjects for .NET。我必须用来尝试连接到Universe 9+系统的唯一示例是使用Visual Basic 6.0,我需要使用C#。任何人都可以告诉我如何连接到C#中的Universe 9+系统?基本上,我试图将我在VB 6中使用的内容转换为C#以便连接到该系统。感谢您提供的任何和所有帮助。文档中的一些示例如下:
Sub SampleFile ()
' SampleFile
'
' This routine creates a new session and opens the chosen
account's VOC
' file. The user is asked for a record id from VOC (e.g.
RELLEVEL), which
' is read and displayed in a message box. Finally the session
is closed.
Dim objSession As object ' The Session to the database
Dim objFile As object ' The file to open (VOC)
Const UVE_NOERROR = 0 ' From UVOAIF.TXT - no error
' The registered name of a database Session - Version 1
Const UV_SESSION_OBJECT = "UniObjects.unioaifctrl"
'
' Create a Session object to work with
' - This is a contrived sample, in a full application the
session object
' - would typically be a Global variable that is set once
maybe in
' - response to a menu selection (e.g. Connect) on the main
form.
'
Set objSession = CreateObject(UV_SESSION_OBJECT)
If objSession Is Nothing Then
' NB. Errors will be reported by VB
Exit Sub ' End the program
End If
objSession.UserName = Input.Box ("User Name:","Login")
objSession.Password = Input.Box ("Password:","Password")
'
' Establish a connection to the database server. By default it
displays
' a dialog box to request the HostName and AccountPath property
values.
'
objSession.Connect
If objSession.IsActive Then
'
' Open the VOC file
'
Set objFile = objSession.OpenFile("VOC")
If objFile Is Nothing Then
MsgBox "Unable to open VOC file (" & objSession.Error &
")"
Exit Sub ' End the program
End If
'
' Read user entered record from the VOC e.g. RELLEVEL
'
objFile.RecordId = InputBox("Enter Record Id:", "Record Id")
objFile.Read
File Object: Example 3-85
/productinfo/alldoc/UNIVERSE10/uv
objs/Ch3
If objFile.Error = UVE_NOERROR Then
' Display the record in a message box and close file
MsgBox objFile.Record
objFile.CloseFile ' Close the file - Good practice
Else
MsgBox "Unable to read (" & objFile.RecordId & ") record
from
å VOC " & objFile.Error
End If
'
' Close the session
'
objSession.Disconnect
Else
'
' Check for Session errors - display message box with error
code
' No error means the user cancelled the connection dialog
box
'
If objSession.Error <> UVE_NOERROR Then
MsgBox "Unable to open connection:- " & objSession.Error
End If
End If
End Sub
(我可以用C#很好地编程。我需要的是关于如何连接到Universe 9+以及如何在C#中实例化我需要的对象和#34;我需要的一两个例子。我知道我需要创建会话对象的实例,但VB 6代码不会告诉我如何在C#中执行此操作...)
答案 0 :(得分:1)
UniVerse 9.6于2001年问世,如果我刚才发现的自述文件是可信的。这意味着你在那里使用的东西早于.Net Framework 1.0版本和商业C#的诞生。
您可以使用Ardent ODBC(或其他一些)驱动程序(如果可以找到它),但您的成功将在很大程度上取决于您的基础数据结构。在我无可置疑的旧UV系统中,它们通常不符合任何一种易于处理的ODBC标准。
您可以按照评论者的建议并在VB6中编写数据库处理程序,但请记住,UniVerse数据并不总是像大多数人习惯的那样返回漂亮的列数据。确保您在开展这项工作之前了解Universe的工作原理,否则这可能会带来漫长而有些痛苦的学习经历。
我认为你需要退后一步来评估需求。如果它是与旧系统的持续集成,您可能会被所拥有的东西所困扰。
如果您只是想要关闭数据,我会从Universe角度开始工作。 BASIC比VB6更容易理解,你可以转储到文件系统并将其加载到其他地方。
祝你好运。答案 1 :(得分:0)
以下是创建一个新的C#程序以使用Rocket U2 UniObjects Object的一些步骤。
// For the C# program, it need to add the “UniObjects Control 3.0” type library to the project first.
//Create new UniObjects Object .
UnioaifCtrlClass uniobj = null;
// Set the Object properties.
uniobj.HostName = “localhost”;
uniobj.AccountPath = “XDEMO”;
uniobj.UserName = “user”;
uniobj.Password = “password”;
//Set UniVerse or UniData database type
UNIOBJECTSLib.enumDataBaseType dbtype;
// UniVerse
dbtype = (UNIOBJECTSLib.enumDataBaseType )1;
// UniData
//dbtype = (UNIOBJECTSLib.enumDataBaseType )2;
uniobj.set_DataBaseType(dbtype);
// Set TCP connection type
// Network TCP
UNIOBJECTSLib.enumTransport transportx;
transportx = (UNIOBJECTSLib.enumTransport)1;
uniobj.set_Transport(transportx);
// Connect to database
bool return_code = uniobj.Connect();
// Check the return_code
// Test UniObjects Command Object
UniCommand uocommand= (UniCommand)uniobj.Command;
uocommand.Text = “LIST VOC”;
uocommand.Exec();
// Show result:
MessageBox.Show(uocommand.Response.ToString());
// Close the session
uniobj.Disconnect();
答案 2 :(得分:0)
没有工具可以自动将VB6程序转换为另一个新的C#程序。您必须按代码将VB6代码转换为C#代码。 UniObjects COM对象已被淘汰多年。驱动程序只有32位。新的U2 Toolkit驱动程序提供了比UniObjects(UO)和UniObjects for .NET(UO.NET)更多的功能。新驱动程序是32位和64位支持。它还满足了许多安全合规性要求。我建议使用具有相同转换功能的新Rocket U2 Toolkit驱动程序。
以下是示例代码的一部分。
- For the C# program, it need to add the “U2.Data.Client” reference to the project first.
- Create new U2 Toolkit Object .
using U2.Data.Client;
using U2.Data.Client.UO;
U2Connection u2connect = new U2Connection();
UniSession u2session;
UniCommand u2cmd;
- Set the Object properties and connection.
Connection_string="server=localhost;Database=XDEMO;UserID=user;Password=pass;Pooling=False;AccessMode=Native;ServerType=UniVerse;RpcServviceType=uvcs";
u2connect.ConnectionString = Connection_string;
u2connect.Open();
u2session = u2connect.UniSession;
- Test UniObjects Command Object
u2cmd = u2session.CreateUniCommand();
u2cmd.Command = "LIST VOC";
u2cmd.Execute();
// Show result:
MessageBox.Show(u2cmd.Response.ToString();
- Close the session
u2connect.Close();