首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle错误ORA-01461:只能为insert绑定LONG值到LONG列

Oracle错误ORA-01461:只能为insert绑定LONG值到LONG列
EN

Stack Overflow用户
提问于 2018-10-04 17:25:53
回答 1查看 676关注 0票数 0

在.Net中更新查询时,我做错了什么吗?我得到了错误,这是我知道的唯一方法。是否有其他方法可以将字节数组文档更新到oracle数据库。我在调试时检查的情况都是好的。

代码语言:javascript
复制
Dim data As Byte() = lDS.Rows(0)(pFieldName)             
Dim strData As String
Using fs As New FileStream(pFileName, FileMode.Open, FileAccess.Read, FileShare.Read)
    Dim br As New StreamReader(fs)
    strData = br.ReadToEnd()
    br.Close()
End Using

Dim oradb As String
oradb = String.Format("Data Source={0};User Id={1};Password={2};", lOracleDB, lUserID, lPassword)
Dim conn As New OracleConnection(oradb)

conn.Open()

Dim strCondition As String = pSQL.ToLower()
strCondition = strCondition.Substring(pSQL.IndexOf("where"), pSQL.Length - pSQL.IndexOf("where") - 1)
Dim sql As String = "UPDATE " + tableName + " SET " + pFieldName + " = :" + pFieldName + " " + strCondition

Dim parmData As OracleParameter = New OracleParameter
parmData.Direction = ParameterDirection.Input

parmData.OracleType = OracleType.Clob
parmData.Size = strData.Length

parmData.ParameterName = pFieldName
parmData.Value = strData
Dim cm As OracleCommand = New OracleCommand
cm.Connection = conn
cm.Parameters.Add(parmData)
cm.CommandText = sql
'At below line I am getting the error
cm.ExecuteNonQuery()
conn.Close()
EN

回答 1

Stack Overflow用户

发布于 2018-10-04 18:37:38

你的代码非常冗长。冗长的代码并不是错误的,它往往更难阅读,因此更容易出错。如果您想要将二进制数据从文件保存到数据库中,那么您可以非常简单地这样做:

代码语言:javascript
复制
Dim data = File.ReadAllBytes(filePath)

Using connection As New OracleConnection(connectionString),
      command As New OracleCommand("UPDATE MyTable SET MyColumn = :MyColumn", connection)
    command.Parameters.Add("MyColumn", OracleType.Blob, -1).Value = data

    connection.Open()
    command.ExecuteNonQuery()
End Using

我不使用Oracle,所以我不确定它在这方面的工作方式是否与SQL Server完全相同,但是Add的第三个参数是列的大小,-1用于MAX。这可能适用于也可能不适用于BLOB列,因此如果不适用,则忽略该参数,如果适用,则将其设置为适当值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52643348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档