c# update Oracle带参数 写法

刚刚从MySql/MSSQL数据库转到Oracle,用C#调用时一直更新不成功 ,后来发现是传参数格式不正确的问题。

Oracle里的command 要在参数名前用冒号:标注。SqlServer和MySQL都是用@。
见http://www.codeproject.com/Questions/618582/ORA-00936-missing-expression
public static bool UpdateNew(Entity.PW_User NewUser)
        {
            try
            {
                Entity.PW_User tt = NewUser;

                StringBuilder sb = new StringBuilder();
                sb.Append(" update pw_User set ");
                sb.Append(" UserName=:UserName, ");
                sb.Append(" Password=:Password, ");
                sb.Append(" UserGroupCode=:UserGroupCode, ");
                sb.Append(" CreateTime=:CreateTime, ");
                sb.Append(" LastLoginTime=:LastLoginTime  ");
                sb.Append(" where UserID=:UserID ");
                //Oracle里的command 要在参数名前用冒号:标注。SqlServer和MySQL都是用@。
                //见-----http://www.codeproject.com/Questions/618582/ORA-00936-missing-expression
                OracleCommand cmd = new OracleCommand();
                cmd.CommandText = sb.ToString();
                cmd.CommandType = CommandType.Text;
                //下面添加参数的顺序一定要跟上面的语句里各参数出现的顺序一致。否则更新不成功。
                //如下面的UserID参数不能先于前面5个参数的任何一个出现。
                cmd.Parameters.Add(new OracleParameter("UserName", OracleDbType.NVarchar2, 45) { Value = tt.UserName });
                cmd.Parameters.Add(new OracleParameter("Password", OracleDbType.Varchar2, 45) { Value = tt.Password });
                cmd.Parameters.Add(new OracleParameter("UserGroupCode", OracleDbType.Varchar2, 45) { Value = tt.UserGroupCode });
                cmd.Parameters.Add(new OracleParameter("CreateTime", OracleDbType.Varchar2, 45) { Value = tt.CreateTime });
                cmd.Parameters.Add(new OracleParameter("LastLoginTime", OracleDbType.Varchar2, 45) { Value = tt.LastLoginTime });
                cmd.Parameters.Add(new OracleParameter("UserID", OracleDbType.Varchar2, 50) { Value = tt.UserID });

                int val = DBHelper_Oracle. ExecuteNonQuery(cmd);

                if (val > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }

            }
            catch
            {
                return false;
            }
        }

希望对大家有用 。

时间: 2024-08-06 18:02:27

c# update Oracle带参数 写法的相关文章

Oracle游标--cursor_01-简单不带参数实现功能

对于游标这个概念,可以理解为类似我们以前学习的jdbc的结果集对象, 我们可以使用游标对结果集从上到下进行遍历,获取每一行内容 首先我们要分析一下游标的分类 带参数的 书写函数的整体架构 定义游标 开启游标 关闭游标 不带参数 举个栗子:查询oracle数据库emp表的所有员工的姓名和工资 --开启远程访问 set serveroutput on; declare -- 变量声明 cursor cemp is select from ename,esal from emp; cename emp

在Oracle中如何创建带参数的视图?

本文介绍了oracle数据库中创建带参数视图的例子,有需要的朋友参考下. 在Oracle中如何创建带参数的视图? 在Oracle数据库中,视图不像存储过程和函数一样,可以定义输入参数,但可以变个方式,使用程序包来实现. 首先,定义程序包: 复制代码 代码示例: /* 按个人需要定义,我定义三个参数 ,因我项目程序需要,所以三个参数都是number ,当然可定义其它类型但切记,第二个create 的参数类型等需以第一个create一致,否则程序包创建失败*/create or replace pa

Oracle游标带参数

Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * from d where id=c_id; begin open b(111); end;

oracle存储过程(带参数的存储过程)

带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(eno in number) as ---定义一个变量保存涨前的薪水,引用emp中sal的类型作为psal的类型 psal emp.sal%type; begin ---得到员工涨前的薪水 select sal into psal from emp where empno=eno; ---给该员工涨1

SQL Server之 (四) ADO增删查改 登录demo 带参数的sql语句 插入自动返回行号

SQL Server之 (四) ADO增删查改  登录demo  带参数的sql语句  插入自动返回行号 自己学习笔记,转载请注明出处,谢谢!---酸菜 1.什么是ADO.NET ADO.NET是一组类库,这组类库可以让我们通过程序的方式访问数据库,并以各种方式操作存储在其中的数据; ADO.NET是基于.NET FrameWork,与.NET FrameWork类库的其余部分是高度集成的 2.连接数据库的步骤 ①创建连接字符串 Data Source=XXX-PC; Initial Catal

JavaScript学习笔记 -- 带参数arguments的函数的用法

JavaScript函数有带参数与不带参数两种形式,不带参数情况如下: function myFunction() { alert('HelloWorld!') } 在这种类型的函数中,输出值是确定的,即明确清楚或可以直接看出输出结果.那么带参数的函数的情况呢,什么时候需要用到参数,为什么要用,好处在哪里?首先我们来看一个简单设置边框颜色的函数,如下: <!DOCTYPE html> <html lang="en"> <head> <meta

带参数的main函数

第一个带参数的main. #include <iostream.h> int main(int argc,char *argv[]) { for(inti=0;i<argc;i++) { cout<<argv[i]<<'\t'; // } return0; } /* int argc, char **argv 用于运行时,把命令行参数传入主程序. argc -- 命令行参数总个数,包括 可执行程序名. argv[i] -- 第 i 个参数. argv[0] --

[服务器]脚本:批处理带参数ping命令 发送邮件脚本

1.批处理带参数ping命令 @echo offecho Input you IP address ......set /p IP=echo Your IP number is %IP%.ping %IP%set IP=pause 2.发送告警脚本 For counter = 1 To 3 Step 1SendMailNext Public Sub SendMailNameSpace = "http://schemas.microsoft.com/cdo/configuration/"

Bootstrap 模态框(Modal)带参数传值实例

模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 为了实现父窗体与其的交互,通常需要向其传值,实现带参数的传递,查看数据的唯一性. 例如:订单列表页,点击一个操作按钮,要对相应的订单进行操作,就需要传递该订单相对应的id. 具体写法: <div class="btn btn-primary btn-sm " data-toggle="modal" data-t