无法在数据库中插入长文本

时间:2015-04-07 11:33:39

标签: c# jquery asp.net wcf fckeditor

我通过jquery在asp.net应用程序的应用程序中有ckeditor

它在local处理得很好。它在数据库中插入数据无关紧要   无论文本的长度如何。但是当我在live之后插入数据时   将构建放在服务器上。

  

我没有保存数据,当我减少它的长度然后保存数据。我正在使用WCF服务插入这个文本。

请在此背景下提供帮助。

期待听到同样的事情。

1 个答案:

答案 0 :(得分:0)

Oracle DB接受4000个字符作为输入字符串的最大长度(不是数据类型)。 也就是说,您希望最多发送4000个字符作为值。 解决方案: 如果您使用的是ASP.NET,请在将列类型更改为CLOB后尝试使用此功能,以便其大小最大为4GB:

 Public Shared Function AssignStringToCLOB(ByVal targetString As String, ByVal myConnection As OracleConnection) As OracleLob
    Dim _tempCommand As New OracleCommand()
    _tempCommand.Connection = myConnection
    _tempCommand.Transaction = _tempCommand.Connection.BeginTransaction()
    _tempCommand.CommandText = "DECLARE A " + OracleType.Clob.ToString() + "; " + "BEGIN " + "DBMS_LOB.CREATETEMPORARY(A, FALSE); " + ":LOC := A; " + "END;"
    Dim p As OracleParameter = _tempCommand.Parameters.Add("LOC", OracleType.Clob)
    p.Direction = ParameterDirection.Output

    _tempCommand.ExecuteNonQuery()

    Dim _tempCLOB As OracleLob = CType(p.Value, OracleLob)
    If targetString <> String.Empty Then
        Dim _bytesArray As Byte() = Text.Encoding.Unicode.GetBytes(targetString)
        _tempCLOB.BeginBatch(OracleLobOpenMode.ReadWrite)
        _tempCLOB.Write(_bytesArray, 0, _bytesArray.Length)
        _tempCLOB.EndBatch()
    End If

    _tempCommand.Transaction.Commit()
    Return _tempCLOB
End Function

并在打开与Oracle DB的连接以设置参数值后调用它,这应该可以正常工作。