Как вставить строку в столбец типа CLOB в oracle db с помощью c # .net - PullRequest
0 голосов
/ 14 октября 2011

Я пытаюсь сохранить XML-файл в виде строки в столбце типа clob в oracle db из c #, я не уверен, как вставить данные типа clob из c #.

код здесь:

public bool Insert_XMLDocument(string ReportType,object XMLDocument)
    {
        try
        {
            Database db = DatabaseFactory.CreateDatabase("XMLDOC_ConnectionString");
            DbCommand dbc = db.GetStoredProcCommand("insert_XMLDOC");
            dbc.CommandType = CommandType.StoredProcedure;
            db.AddInParameter(dbc, "pid", DbType.Int32, 1);                
            db.AddInParameter(dbc, "repo_document", DbType.Object,XMLDocument);                
            int i = db.ExecuteNonQuery(dbc);
            if (i > 0)
                return true;
            else
                return false;
        }
        catch (Exception ex) { 
            //HandleException(ex); 
            return false; }

    }

Ошибка из-за компиляции: невозможно связать тип System.String как Blob.

Ответы [ 2 ]

0 голосов
/ 20 октября 2011

вместо использования фабрики баз данных я использовал метод провайдера .net, в котором мы можем получить «OracleType.Clob», который решает проблему, я просто передал XML-документ в виде строки, и работа была выполнена

0 голосов
/ 20 октября 2011

Можете ли вы показать нам свою хранимую процедуру и / или метод db.AddInParameter()? Не видя больше кода, это более или менее просто предположение:

Похоже, что передача DbType.Object слою данных будет означать, что тип данных параметра должен быть BLOB (двоичный), но вы указали, что хотите, чтобы он был CLOB (символ).

Давайте предположим, что ваша хранимая процедура определена так: CREATE PROCEDURE insert_XMLDOC (pid IN NUMBER, repo_document IN CLOB)

Если входной параметр object XMLDocument является строкой или если ваш метод db.AddInParameter() преобразует этот объект в строку или текстовое представление любого типа, тогда ваш уровень данных может пытаться назначить строку в качестве параметра BLOB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...