powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / varchar -> ansi string
2 сообщений из 2, страница 1 из 1
varchar -> ansi string
    #37304261
Acce_Ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Прошу помочь в решении вопроса. Я специалист по SQL Server, а ответ нужен для c# специалиста.

Дано:
1. Процедура в БД, которая в качестве output-параметра возвращает строку varchar(...).
2. Эта строка в дальнейшем должна использоваться приложением как ansi string, без всяких преобразований в Unicode и т.д. (ну или с преобразованиями, только чтоб исходные данные остались корректными).

Имеется примерно такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
  using (SqlConnection connection = new SqlConnection(SQLConnString))
  {
      // Create the command and set its properties.
      SqlCommand command = new SqlCommand();
      command.Connection = connection;
      command.CommandText = "ReadSomeData";
      command.CommandType = CommandType.StoredProcedure;

      // Add the input parameter and set its properties.
      SqlParameter parameter = new SqlParameter();
      parameter.ParameterName = "@Result";
      parameter.SqlDbType = SqlDbType.VarChar;
      parameter.Size = 2000;
      parameter.Direction = ParameterDirection.Output;

      // Add the parameter to the Parameters collection. 
      command.Parameters.Add(parameter);

      // Open the connection and execute the reader.
      connection.Open();
      command.ExecuteNonQuery();

      // String s = parameter.Value.ToString();
      // ?? как достать значение параметра, не приводя к Unicode


      connection.Close();
  }

Вопрос:
можно ли достать значение параметра, не приводя к Unicode. Сразу в массив байтов, например.
Или единственный выход - делать параметр типа varbinary (ну или на стороне SQL Server приводить строку к varbinary)?
...
Рейтинг: 0 / 0
varchar -> ansi string
    #37304567
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вы же понимаете, что буть то ASCII строка в юникоде или в аски, значение остается одинаковое (во всех форматах число аски представления остается идентичным), просто в аски 1 байт используется.

вот вам пример, строка (string default Unicode), переводится в массив аски байтов, при переводе обратно на аски строку все происходит корректно, а вот юникод уже не работает

Код: plaintext
1.
2.
3.
 var bytes = Encoding.ASCII.GetBytes("hello World!");

            Console.WriteLine(Encoding.ASCII.GetString(bytes));
            Console.WriteLine(Encoding.Unicode.GetString(bytes));
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / varchar -> ansi string
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]