Uni Objects . net运行查询和获取结果集

本文关键字:获取 结果 查询 Objects net 运行 Uni | 更新日期: 2023-09-27 18:13:27

我一直在摆弄UniObjects . net。

我希望能够运行一个SELECT查询,并得到数据的形式,我可以通过数据运行。

我一直在使用的文档在http://www.rocketsoftware.com/u2/products/universe/resources/technical-manuals/universe-v11r1/uonet-v11r1.pdf

我目前正在使用

运行查询
            // UniCommans is a new instance of the CreateUniCommand() method
            UniCommand cmd = us1.CreateUniCommand();
            string UVDatabaseName = "SLCUST";
            // Command is the query that will be sent to the server to be rum
            cmd.Command = "SELECT " + UVDatabaseName + " USING DICT " + UVDatabaseName + " WITH CUSREF PRICECODE";

但是我不知道如何将数据输入到他们提供的数据类型对象中:

  • UniDynArray
  • UniFile
  • UniSelectList

            // OpenSession is used to open a new session to the database
            us1 = UniObjects.OpenSession("92.0.0.1", "username", "password", "/path/TOFILE", "uvcs");
            // Create new instance a UniCommand
            UniCommand cmd = us1.CreateUniCommand();
            string UVDatabaseName = "SLCUST";
            // Command is the query that will be sent to the server to be run
            cmd.Command = "SELECT " + UVDatabaseName + " USING DICT " + UVDatabaseName + " WITH CUSREF PRICECODE";
            // Buffer size for receiving data can be get/set using CommandBlockSize
            // 0 is unlimited, the full data set will be received
            cmd.CommandBlockSize = 0;
            // Execute() executes the Command on the server
            cmd.Execute();
            // A status response is returned as a string in Response
            string response_str = cmd.Response;
            Console.WriteLine(response_str);
            // Check for the response of the UniCommand
            // UVS_COMPLETE = The command was completed, or unsuccessful
            if (cmd.CommandStatus == UniObjectsTokens.UVS_COMPLETE)
            {
    
                // How do I loop through the data set from my query?
    
            }
    

我已经计算出,我可以通过使用以下代码来运行整个表:

// Create a Uni file, required for you can use a database file
UniFile custfile = us1.CreateUniFile("SLCUST");
// Create a select list from the ID returned from cmd.Response;
UniSelectList selectList = us1.CreateUniSelectList(0);
selectList.Select(custfile);

bool lLastRecord = selectList.LastRecordRead;
while (!lLastRecord)
{
    string s = selectList.Next();
    Console.WriteLine("Record ID:" + s);
    lLastRecord = selectList.LastRecordRead;
}

当我运行命令时,我得到以下响应字符串

4665条记录被选择到SELECT列表#0

这只是如何访问列表'0',我已经尝试过,但它是如何按摩到正确的类类型:

UniSelectList selectList = us1.CreateUniSelectList(0);

Uni Objects . net运行查询和获取结果集

你离目标越来越近了。"SELECT"命令将在默认情况下生成一个键列表到SELECT list 0。你只需要给那个分配一个UniSelectList对象。除非想检查命令是否生成了错误,否则实际上不需要查看命令响应:

 // OpenSession is used to open a new session to the database
    us1 = UniObjects.OpenSession("92.0.0.1", "username", "password", "/path/TOFILE", "uvcs");
    // Create new instance a UniCommand
    UniCommand cmd = us1.CreateUniCommand();
    string UVDatabaseName = "SLCUST";
    // Command is the query that will be sent to the server to be run
    cmd.Command = "SELECT " + UVDatabaseName + " USING DICT " + UVDatabaseName + " WITH CUSREF PRICECODE";
    UniSelectList uSelect = uSession.selectList (0);
    // Execute() executes the Command on the server
    cmd.Execute();
    while (!lLastRecord)
    {
      string s = uSelect.Next();
      Console.WriteLine("Record ID:" + s);
      lLastRecord = selectList.LastRecordRead;
    }