找回密码
 立即注册

QQ登录

只需一步,快速开始

Eden.Sun Wyn认证
超级版主   /  发表于:2024-7-18 18:11  /   查看:294  /  回复:3
本帖最后由 KarenGao 于 2024-7-24 11:06 编辑

    当前市面上的数据库琳琅满目多种多样,虽然 Wyn 也在不断地增加更多的数据源类型,但是总有一些类型的数据源是当前版本兼顾不到的。为了保证客户的正常使用,Wyn 8.0 中增加了一种新的数据源类型——自定义数据源。我们只需要下载对应的数据源的驱动包,就可以进行连接。
    下面我们就介绍自定义数据源的使用方式。


    1. 环境需要
    生成自定义数据源时,需要保证环境中安装了.Net8.0 环境(安装 Wyn8.0 之后环境中会自动安装)。
    image.png235777281.png


    2. 获取自定义数据源
    下载附件中的 NativeJdbcProvider.zip 文件,解压之后文件如下:
    image.png53052672.png
     使用管理员权限打开 dos 命令框,进入解压后的目录下执行命令:dotnet  publish
    image.png744614562.png
    命令执行完毕之后会生成两个目录:
    image.png679869384.png
    进入其中的bin目录:bin\Release\net8.0,将整个 publish 目录保存到wyn的安装目录下的 DatasourceService 目录中。
   
image.png505694884.png
   
    3. 配置文件
    在刚才的 publish 目录下有一个 NativeJdbcProvider.dll 文件,这个就是自定义数据源生成的文件,记录文件的路径。在 wyn 的配置文件中添加如下配置:

<DataProviders>
    <CustomNativeQueryDataProviderAssemblies>                    <sys:string>D:\GrapeCity\Wyn\DatasourceService\publish\NativeJdbcProvider.dll</sys:string>
    </CustomNativeQueryDataProviderAssemblies>
</DataProviders>

    image.png84020384.png
    PS:如果修改之后服务启动不了,或者不生效,可以看一下日志是否是不识别 <sys:string> 标签,如果是这个错误的话,就检查一下配置文件是否引入了 xmlns:sys="https://extendedxmlserializer.github.io/system"   规则:
    image.png933774413.png

    4. 下载驱动
    以 MySQL 数据库为例,在官网上下载 MySQL 的驱动包:Connector/J 9.0.0 ,然后将驱动包放在 NativeJdbcProvider.dll 的同级目录下:
    image.png946584472.png

    5. 创建数据源
    所有配置都完成之后,然后重启Wyn服务,在创建数据源界面就可以看到"自定义数据源",然后填写连接信息:
DriverPath:使用的驱动包所在的位置(支持相对路径,相对于NativeJdbcProvider.dll文件的路径);
DriverClass:驱动文件全路径类名称;
JdbcUrl:数据库连接字符串。
DriverPath = "mysql-connector-j-9.0.0.jar";
DriverClass = "com.mysql.cj.jdbc.Driver";
JdbcUrl = "jdbc:mysql://localhost:3306/my_database?user=root&password=root";


    image.png957460937.png

    6. 自定义数据源的使用
    创建的自定义数据源,不能直接看到数据库中的表信息,所以只能使用自定义SQL表来查询数据。
    image.png902172241.png

    7. JavaScript 数据源
    我们还提供了基于 JavaScript 的自定义数据源,使用方式和之前的自定义的JDBC数据源的使用方式类似,只是不是需要数据驱动。

    下载、解压附件中的 javascript_source.zip 文件,并复制到Wyn安装目录下:
    image.png103114623.png
    修改配置文件,配置的是 JavascriptProvider.dll 文件

    image.png433215331.png
    重启服务之后,可以看到 JavaScript 数据源,我们创建一个测试数据源:

Engine = Jint;
LimitMemory = 100;
TimeoutInterval = 30;
MaxStatements = 2000;

var response = helper.fetch('https://jsonplaceholder.typicode.com/posts', {
    method: 'GET',
    headers: {
        'Content-Type': 'application/json'
    }
        });

    image.png176077574.png

    8. 使用选择
    JDBC 数据源常用语连接各种数据库数据源,需要下载对应的数据库驱动程序,连接之后使用数据库SQL语句进行数据的查询获取。Javascript 数据源是通过前端请求数据,不需要驱动,一般常用于json类型的接口数据。

    9. 接口开发说明
    自定义数据源是为了快速连接一些当前版本不支持的数据源类型,可以使用附件中的 NativeJdbcProvider.zip 与 javascript_source.zip 按照上面的步骤生成使用。而附件中的逻辑是我们写得固定的内容,如果有客户自己的需求,可以在代码中进行自定义开发。

    自定义开发流程如下:
    ① 使用 IDE 创建项目,并引入 Gcef.CustomProvider.Native.dll 库(见附件),
    ② 创建一个实现接口的类:Gcef.CustomProvider.Native.INativeQueryDataProvider
    image.png658327941.png
    ③ 修改程序代码,最后生成对应的项目。

    ④ 接口说明:
  1. <font size="3">public interface INativeQueryDataProvider
  2. {
  3.     //
  4.     // Summary:
  5.     //     The name of the provider. Should be unique globally.
  6.     static abstract string ProviderName { get; }

  7.     //
  8.     // Summary:
  9.     //     Creates an instance of the native-query data provider statically.
  10.     static abstract INativeQueryDataProvider CreateInstance();

  11.     //
  12.     // Summary:
  13.     //     Configures the features of the provider.
  14.     //
  15.     // Parameters:
  16.     //   features:
  17.     static abstract void Configure(IFeatureCollection features);

  18.     //
  19.     // Summary:
  20.     //     Executes a native query and returns the result as a data reader.
  21.     //
  22.     //     Each time this method is being called, a new instance of the current class will
  23.     //     be created.
  24.     //
  25.     //     When implementing this method, you should make sure that all unmanaged resources
  26.     //     are properly closed after the readerConsumer finished works.
  27.     //
  28.     // Parameters:
  29.     //   nativeQuery:
  30.     //
  31.     //   readerConsumer:
  32.     Task ExecuteAsync(INativeQuery nativeQuery, Action<IDataReader> readerConsumer);

  33.     //
  34.     // Summary:
  35.     //     Tests the connection string. The implementation can just check the connection
  36.     //     string or actually connect to the database.
  37.     //
  38.     //     As a converntion, this method should throw exceptions if the test failed.
  39.     //
  40.     // Parameters:
  41.     //   connectionString:
  42.     Task TestConnectionAsync(string connectionString);
  43. }</font>
复制代码

    具体的可以参考附件中的两个自定义数据源的写法。



javascript_source.zip

23.22 KB, 下载次数: 24

NativeJdbcProvider.zip

22 KB, 下载次数: 16

Gcef.CustomProvider.Native.dll

6.5 KB, 下载次数: 19

Wyn.conf

1.75 KB, 下载次数: 13

3 个回复

倒序浏览
星海末
初级会员   /  发表于:2024-8-13 08:53:05
沙发
什么时候支持下火鸟的数据库
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2024-8-13 09:00:59
板凳
星海末 发表于 2024-8-13 08:53
什么时候支持下火鸟的数据库

这个您可以在需求板块发帖建议的哦,产品经理会每天查看的。
https://gcdn.grapecity.com.cn/showforum-249-1.html

如果比较着急,可以使用本帖中的自定义数据源,只要这个数据库支持jdbc的连接方式,就可以连接的。
回复 使用道具 举报
lucas.Yan
超级版主   /  发表于:2024-8-13 09:03:14
地板
星海末 发表于 2024-8-13 08:53
什么时候支持下火鸟的数据库

您好,8.0的这个新特性可以通过JDBC驱动来连接不同的数据库,只需要实现对应接口即可接入Wyn。
FirebirdJ DBC下载:https://firebirdsql.org/en/jdbc-driver/
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部