Система Universe 9+, UniObjects (не для.NET) - Как преобразовать примеры из VB 6 в C#

Я работаю с многозначной базой данных, которая в настоящее время использует программное обеспечение UniObjects IBM U2 (теперь Rocket Software) для подключения к системе Universe 9.+. Это не UniObjects для.NET, как это было выпущено Rocket Software для систем Universe 10+ и 11+. Единственные примеры, которые я должен использовать, чтобы попытаться подключиться к системе Universe 9+, - это использование Visual Basic 6.0, и мне нужно использовать C#. Может кто-нибудь показать мне, как подключиться к системе Universe 9+ в C#? По сути, я пытаюсь перевести то, что я использовал бы в 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+ и как создать экземпляр объектов "UniObjects", которые мне нужны в C#. Например, я знаю, что мне нужно создать сеанс объект, но код VB 6 не скажет мне, как это сделать в C# ...)

3 ответа

UniVerse 9.6 вышел в 2001 году, если верить только что найденному файлу Readme. Это означает, что то, что вы используете там, предшествует выпуску.Net Framework 1.0 и рождению коммерческого C#.

Возможно, вам удастся использовать драйвер Ardent ODBC (или какой-либо другой) (если вы сможете его найти), но ваш успех будет сильно зависеть от вашей базовой структуры данных. В моем, по общему признанию, несколько ограниченном воздействии старых УФ-систем, они, как правило, не соответствуют стандартам ODBC в любом виде, с которым легко иметь дело.

Вы можете сделать так, как предлагают комментаторы, и написать обработчик базы данных в VB6, но имейте в виду, что данные UniVerse не всегда возвращают довольно столбчатые данные, к которым привыкли большинство людей. Убедитесь, что вы понимаете, как работает Вселенная, прежде чем предпринять это усилие, так как в противном случае это, вероятно, будет долгим и несколько болезненным процессом обучения.

Я думаю, что если честно, вам нужно сделать шаг назад, чтобы оценить необходимость. Если это постоянная интеграция со старой системой, вы, вероятно, застряли с тем, что у вас есть.

Если вы просто пытаетесь получить данные, я бы работал с точки зрения Вселенной. Бейсик намного проще, чем VB6, и вы можете сделать дамп в файловую систему и загрузить его в другое место.

Удачи.

Вот несколько шагов по созданию новой программы на 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();

Не существует инструмента для автоматического преобразования программы VB6 в другую новую программу на C#. Вы должны преобразовать код VB6 в код C# по коду. COM-объект UniObjects был снят с производства в течение многих лет. Драйвер только 32-битный. Новый драйвер U2 Toolkit предоставляет больше возможностей, чем UniObjects (UO) и UniObjects для.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();
Другие вопросы по тегам