首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在c#中更新Oracle表

在c#中更新Oracle表
EN

Stack Overflow用户
提问于 2016-05-31 19:24:24
回答 1查看 2.2K关注 0票数 0

我试图更新Oracle表,但是我得到了一个错误"{"ORA-01745:无效的主机/绑定变量名“}”,尽管我在添加新记录时没有问题.我在这里错过了什么?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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)

未加工

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-31 19:55:16

您正在使用甲骨文关键字ROWID之一作为查询中的参数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
UUID=:rowID

将其更改为:rowID1或其他什么,然后尝试

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

https://stackoverflow.com/questions/37558877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文