我试图更新Oracle表,但是我得到了一个错误"{"ORA-01745:无效的主机/绑定变量名“}”,尽管我在添加新记录时没有问题.我在这里错过了什么?
public static bool UpdateRow(Byte[] rowId, string paramXml1, string paramXml2, string paramXml3, string paramXml4,
string tblName = "XML_DATA")
{
string updateUser = Environment.UserName;
try
{
using (connection = new OracleConnection())
{
connection.ConnectionString = ConnectionString;
connection.Open();
var command = connection.CreateCommand();
//TODO: how to prevent sql injection?
var query = $"UPDATE {tblName} SET XML_DATA1=:xml1, XML_DATA2=:xml2, XML_DATA3=:xml3, XML_DATA4=:xml4, XML_DATA5=:updateUser, UPDATE_DATE=sysdate WHERE UUID=:rowID)";
command.CommandText = query;
command.Parameters.Add(new OracleParameter("xml1", paramXml1.ToUpper()));
command.Parameters.Add(new OracleParameter("xml2", paramXml2.ToUpper()));
command.Parameters.Add(new OracleParameter("xml3", paramXml3.ToUpper()));
command.Parameters.Add(new OracleParameter("xml4", paramXml4));
command.Parameters.Add(new OracleParameter("updateUser", updateUser.ToUpper()));
command.Parameters.Add(new OracleParameter("rowID", rowId));
int rowUpdated = command.ExecuteNonQuery();
if (rowUpdated > 0)
{
return true;
}
}
}
catch (OracleException e)
{
}
return false;
}
数据类型如下:
XML_DATA1 = VARCHAR2(50 CHAR)
XML_DATA2 = VARCHAR2(50 CHAR)
XML_DATA3 = VARCHAR2(50 CHAR)
XML_DATA4 = CLOB
XML_DATA5 = VARCHAR2(50 CHAR)
UPDATE_DATE =时间戳(9)
未加工
发布于 2016-05-31 19:55:16
您正在使用甲骨文关键字ROWID
之一作为查询中的参数。
UUID=:rowID
将其更改为:rowID1
或其他什么,然后尝试
https://stackoverflow.com/questions/37558877
复制相似问题