使用C ++ Builder 10.1 Berlin中的DataSnap技术访问远程数据库

时间:2017-06-15 15:07:48

标签: delphi c++builder datasnap

如何使用C ++ Builder 10.1 Berlin中的DataSnap技术从远程数据库查询和获取结果?

我想构建一个简单的解决方案,它有两个VCL Forms应用程序,比如client(1)和server(2),在两台不同的Windows操作系统上运行,连接在同一个本地网络上。

但是我无法完成这个简单的任务,这就是我试图做的事情:

在服务器应用程序(2)上,我使用:

TSQLConnection *SQLConnection1;
TSQLQuery *SQLQuery1;

我将加载一个SQLite数据库版本3:

 if (SQLConnection1->Params->IndexOf("Database") == -1)
     {
        SQLConnection1->Params->Add("Database="+Form->DataBaseFile );
     }
     else
     {
        SQLConnection1->Params->Values["Database"] = Form->DataBaseFile;
     }

     try
     {
        SQLConnection1->Connected = true;
     }
     catch (EDatabaseError& E)
     {
       ShowMessage("Exception raised with message" + E.Message);
     }

并执行sql查询:

 try
 {
   SQLQuery1->SQL->Text = "query from client app(1)";
   SQLQuery1->Active = false;
   SQLQuery1->ExecSQL();


 }
 catch (Exception& E)
 {
    ShowMessage( "SQLite exception raised with message:\n\n" + E.Message);
    SQLConnection1->Connected = false;
 }

我需要将SQLQuery1结果返回给客户端app(1)

在客户端应用程序上,我认为我应该执行以下操作,但我不确定,我不知道如何正确执行此操作:

TSQLServerMethod *SQLServerMethod1;

SQLServerMethod->SQLConnection = SQLConnection1;

   try{
     SQLServerMethod.ServerMethodName = "TDSUtilityMethods.echoOutStr";
     SQLServerMethod->Params[0]->AsString = "123";
     SQLServerMethod->ExecuteMethod();
     memoOutput->Text = SQLServerMethod->Params[1]->AsString;
  }
   finally{
     SQLServerMethod->Close();
   }

因此,目的是创建一个服务器应用程序(2),它从客户端app(1)托管并执行sql查询,它发送sql查询并等待结果。发送sql查询的应用程序(1)是chrome客户端的包装器。我尝试使用服务器应用程序(2)上的TIdHTTPServer和来自铬客户端应用程序(1)的WebSockets实现所有这些解决方案,并发布了一个相关的问题here但是实现WebSocket协议(编码/解码数据包)有点困难业余开发人员。然后我发现一个更简单的解决方案可能是使用DataSnap技术。我已经阅读了Developing DataSnap Applications,但仍然无法构建这个简单的解决方案,在embarcadero网站上描述了每个组件,但是因为我是业余开发人员,我发现它很难完成一个简单的任务,使用DataSnap技术比使用WebSockets更容易构建。但现在我发现很难实现DataSnap技术,因为有很多新的东西在没有示例的情况下令人困惑。

如果您在C ++ Builder 10.1 Berlin中知道如何执行此操作,请在此处显示简短的示例。

0 个答案:

没有答案