暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

KingbaseES Kdbndp使用指南

原创 jack 2021-12-27
677

关键

Kdbndpnet core

1. Kdbndp简介

Kdbndp是完全使用C#语言实现,完全兼容ADO.NET,其API应该与其他.NET数据库驱动程序几乎完全相同。

2. 支持版本

netstandard2.0

3. 连接串参数解析
3.1. 标准(通常使用)

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;User Id=myUsername;Password=myPassword;

复制代码

3.2. 使用Windows安全性验证

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;Integrated Security=true;

复制代码

3.3. 设置命令超时

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;User Id=myUsername;Password=myPassword;CommandTimeout=20;

复制代码

参数以秒为单位进行测量,并控制在抛出错误之前等待命令完成的时间。

3.4. 设置连接超时

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;User Id=myUsername;Password=myPassword;Timeout=15;

复制代码

参数以秒为单位进行测量,并控制在抛出错误之前等待连接打开的时间。

3.5. 指定协议版本

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;User Id=myUsername;Password=myPassword;Protocol=3;

复制代码

密钥协议的有效值为2或3。

3.6. SSL已激活

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;Userid=myUsername;Password=myPassword;Protocol=3;SSL=true;SslMode=Require;

复制代码

3.7. 没有SSL

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;Userid=myUsername;Password=myPassword;Protocol=3;SSL=false;SslMode=Disable;

复制代码

3.8. 使用连接池

  1. Server=127.0.0.1;Port=5432;Database=myDataBase;Userid=myUsername;Password=myPassword;Protocol=3;Pooling=true;MinPoolSize=1;MaxPoolSize=20;ConnectionLifeTime=15;

复制代码

MaxPoolSize的值介于0到1024,默认值100,ConnectionLifeTime为连接池中连接数超过MaxPoolSize后关闭未使用连接等待的时间。

4. 在.net core中使用Kdbndp.dll
4.1. 创建项目
- 打开 Visual Studio 2017;
- “文件”>“新建”>“项目...”;
- 从左侧菜单中选择“已安装”>“Visual C#”->“.NET core”;
- 选择“控制台应用(.NET Core)”项目模板;
- 将项目命名为 Kdbndp_net_core (项目名),并单击“确定”;
4.2. 添加引用以及依赖包

添加依赖包System.Runtime.CompilerServices.Unsafe,在Nuget控制台输入以下命令

  1. cd kdbndp_net_core
  2. dotnet add package  System.Runtime.CompilerServices.Unsafe

复制代码


执行完成后会看到“依赖项”->“Nuget”下有如下引用:

   

添加Kdbndp.dll的引用:“依赖项”->“添加引用”添加Kdbndp.dll

4.3. 简单用例

引用命名空间

  1. using Kdbndp;
  2. using KdbndpTypes;
  3. 用例函数
  4. static void TestKdbndp()
  5. {
  6.             const string ConnectionString = "Server=192.168.28.212;User ID=SYSTEM;Password=MANAGER;Database=KDBNDP_TESTS;Port=54328";
  7.      var conn = new KdbndpConnection(ConnectionString);

  8.      try
  9.      {
  10.          conn.Open();

  11.         // create table
  12.          const string createTable =
  13.                  @"CREATE TABLE PERSON3 (
  14.                  person_id serial PRIMARY KEY NOT NULL,
  15.                  person_uuid uuid NOT NULL
  16.                  ) WITH(OIDS=FALSE);";
  17.           var command = new KdbndpCommand(createTable, conn);
  18.           command.ExecuteNonQuery();

  19.           var uuidDbParam = new KdbndpParameter(":param1", KdbndpDbType.Uuid);
  20.           uuidDbParam.Value = Guid.NewGuid();

  21.           // add data
  22.           command = new KdbndpCommand(@"INSERT INTO PERSON3 (person_uuid) VALUES (:param1);", conn);
  23.           command.Parameters.Add(uuidDbParam);
  24.           command.ExecuteNonQuery();

  25.           //select data
  26.           command = new KdbndpCommand("SELECT person_uuid::uuid FROM PERSON3", conn);

  27.           using (var reader = command.ExecuteReader())
  28.           {
  29.               if (reader.Read())
  30.               {
  31.                   Console.WriteLine(reader.GetFieldValue<Guid>(0));
  32.               }
  33.           }

  34.           // update data
  35.           uuidDbParam = new KdbndpParameter(":param2", KdbndpDbType.Uuid);
  36.           uuidDbParam.Value = Guid.NewGuid();

  37.           command = new KdbndpCommand(@"update PERSON3 set person_uuid=:param2;", conn);
  38.           command.Parameters.Add(uuidDbParam);
  39.           command.ExecuteNonQuery();

  40.           //after update,select data
  41.           command = new KdbndpCommand("SELECT person_uuid::uuid FROM PERSON3", conn);

  42.           using (var reader = command.ExecuteReader())
  43.           {
  44.               if (reader.Read())
  45.               {
  46.                    Console.WriteLine(reader.GetFieldValue<Guid>(0));
  47.               }
  48.           }

  49.           //delete data
  50.           command = new KdbndpCommand(@"delete from  PERSON3;", conn);
  51.           command.ExecuteNonQuery();

  52.           //after delete,select data
  53.           command = new KdbndpCommand("SELECT person_uuid::uuid FROM PERSON3", conn);

  54.           using (var reader = command.ExecuteReader())
  55.           {
  56.                if (reader.Read())
  57.                {
  58.                   Console.WriteLine(reader.GetFieldValue<Guid>(0));
  59.                }
  60.           }

  61.      }
  62.      catch (KingbaseException e)
  63.      {
  64.          if (e.SqlState == "3D000")
  65.              Console.Write("Please create a database kdbndp_tests, owned by user kdbndp_tests");
  66.          else if (e.SqlState == "28P01")
  67.              Console.Write("Please create a user kdbndp_tests as follows: create user kdbndp_tests with password 'kdbndp_tests'");
  68.           else
  69.              throw;
  70.     }

  71. conn.Close();
  72. }

复制代码


5. 在.net Framework中使用Kdbndp.dll

只需引用Kdbndp.dll即可,.net core中测试函数可使用

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论