Система 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();