在.Net中更新查询时,我做错了什么吗?我得到了错误,这是我知道的唯一方法。是否有其他方法可以将字节数组文档更新到oracle数据库。我在调试时检查的情况都是好的。
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()发布于 2018-10-04 18:37:38
你的代码非常冗长。冗长的代码并不是错误的,它往往更难阅读,因此更容易出错。如果您想要将二进制数据从文件保存到数据库中,那么您可以非常简单地这样做:
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列,因此如果不适用,则忽略该参数,如果适用,则将其设置为适当值。
https://stackoverflow.com/questions/52643348
复制相似问题