Как преобразовать строку в oracle clob для вставки базы данных?

Я хочу вставить строку в базу данных оракула как тип данных clob в С#. Как я могу это сделать? некоторые коды, например:

  private static byte[] GetByteArr(string listParameter)
    {
        if (listParameter!=null)
        {
            return Encoding.Unicode.GetBytes(listParameter);
        }
        else
        {
            return Encoding.Unicode.GetBytes(string.Empty);
        }
    }
  byte[] toArr = GetByteArr((string)eMessageList[1]);
  emailParameters[1] = command.Parameters.Add("pEto",OracleDbType.Clob, toArr,ParameterDirection.Input);
  command.ExecuteNonQuery();

этот код вставляет toArr в базу данных как System.Byte[].


person csjoseph    schedule 17.05.2013    source источник
comment
Если это clob (а не blob), вам не нужно преобразовывать его в массив байтов. Вам возможно нужно преобразовать его в char[], но не в byte[]... Кроме того, вы ничего не сказали о том, что происходит с кодом, который вы уже предоставили.   -  person Jon Skeet    schedule 17.05.2013
comment
Я ничего не говорил о том, что происходит, потому что некоторые комментарии относятся не к моей операции, а к тому, что я делаю. Я просто хочу научиться вставлять строку в db как тип данных clob.   -  person csjoseph    schedule 17.05.2013


Ответы (2)


попробуй это

byte[] newvalue = System.Text.Encoding.Unicode.GetBytes(mystring);
var clob = new OracleClob(db);
clob.Write(newvalue, 0, newvalue.Length);
person Luiz Eduardo    schedule 08.05.2017
comment
Работает на меня. Следует отметить, что соединение с базой данных, переданное OracleClob, должно быть открытым. - person 0909EM; 16.08.2019

Хотя вопрос кажется устаревшим, я хочу поделиться примером, который сработал для меня.

Мое намерение состояло в том, чтобы сохранить строку JSON (с более чем 32 тыс. символов) в поле clob.

Вот что я сделал:

string JSON_string = JsonConvert.SerializeObject(SomeObject);
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
myCommand.Parameters.AddWithValue("", SomeAttribute);
myCommand.Parameters.AddWithValue("", SomeAttribute2);
myCommand.Parameters.AddWithValue("", SomeAttribute3);
myCommand.Parameters.AddWithValue("", JSON_string);

А затем выполнить команду. Для этого я использую нашу библиотеку компаний:

DataSet myDS = myUser.myLoginUser._MySpAppS.RunSQL("INSERT INTO MARS$T_BCSAVINGS (MASSNAHMEN_ID, USER_ID, AKTIV, HEBELDATEI) VALUES (?, ?, ?, ?);", myCommand.Parameters);

Я сохраняю результат в DataSet только для проверки успешности запроса.

Итак, в основном, что я сделал, это передал строку в список параметров OleDbCommand и выполнил запрос с этими параметрами.

person MarvinS    schedule 18.09.2019