C # .net Core и Oracle устанавливают кодировку - PullRequest
0 голосов
/ 29 мая 2018

В проекте web-api на .Net Core есть подключение к Oracle БД через dotNetCore.data.OracleClient (nugget package)

Я читаю данные из конвейерной функции следующим образом:

 using (DbConnection connection = new OracleConnection("oraclecs")) {
    connection.Open();

    using (var cmd = connection.CreateCommand()) {
      cmd.CommandType = CommandType.Text;

      cmd.CommandText = "select name from Table(SCHEMA.PACKAGE.FUNC(PARAM1=>1,PARAM2=>4))";

      DbDataReader er = cmd.ExecuteReader();
      while (er.Read()) {
        string Name = er.GetValue(er.GetOrdinal(name: "name")).ToString();
      }
      connection.Close();
    }
  }

Имя в базе данныхна русском языке БД кодировка NLS_CHARACTERSET это CL8MSWIN1251

Когда я получил значение из поля name я вижу ????????вместо реального имени

Также просто select в тексте команды через Oracle SQL Developer верните правильные данные

Что может помочь мне исправить это?

1 Ответ

0 голосов
/ 29 мая 2018

Спасибо за помощь @ wernfried-domscheit

Мой веб-API .net Core работает в докере

Я установил NLS_LANG = .CL8MSWIN1251 в файлеdocker-compose.override.yml И это помогло мне

Мой файл docker-compose.override.yml:

version: '3'

services:
  api:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ORACLE_CS=Data Source = ip:port/sid;PERSIST SECURITY INFO=True;USER ID=user; Password=password;
      - NLS_LANG=.CL8MSWIN1251
    ports:
      - "5050:80"
networks:
  default:
    external:
      name: nat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...