sqlStr = @"update VW_MEMBER_INFO_WEB set 
                    mem_name=:memName,sex=:sex,mobile=:mobile,COMPANY_PHONE=:comPhone,
                    HOME_PHONE=:homePhone,MAIL=:mail,BIRTHDAY=:birthday,
                    DETAIL_ADDR=:detailAdd where mem_id=:memId";                //string timeTemp = "to_date('" + birthday + " 00:00:00','yyyy-mm-dd hh24:mi:ss')";                OracleParameter[] prams = { new OracleParameter(":memId", mem.MemberNo), new OracleParameter(":memName", realName),
                                      new OracleParameter(":sex",sex),new OracleParameter(":mobile",mobile),new OracleParameter(":comPhone",comPhone),
                                      new OracleParameter(":homePhone",homePhone),new OracleParameter(":mail",mail),
                                      new OracleParameter(":birthday",birthday),new OracleParameter(":detailAdd",address)};
                
                int temp = Convert.ToInt32(SQLHelper.ExecuteNonQuery(conStr, CommandType.Text, sqlStr, prams));错误信息:当执行int temp语句时,捕捉错误信息——ORA-01861: 文字与格式字符串不匹配注:其中的birthday获取到的值是"1982-07-18"格式

解决方案 »

  1.   

    BIRTHDAY=to_date(:birthday,'yyyy-mm-dd')
      

  2.   

    OracleParameter(":birthday",timeTemp)
    你的timeTemp才是date类型的
    这种情况你可以设置断点 看下你的语句是什么样的
      

  3.   


    更改后的代码:
    sqlStr = @"update VW_MEMBER_INFO_WEB set 
                        mem_name=:memName,sex=:sex,mobile=:mobile,COMPANY_PHONE=:comPhone,
                        HOME_PHONE=:homePhone,MAIL=:mail,BIRTHDAY=:birthday,
                        DETAIL_ADDR=:detailAdd where mem_id=:memId";                string timeTemp = "to_date('" + birthday + "','yyyy-mm-dd')";                OracleParameter[] prams = { new OracleParameter(":memId", mem.MemberNo), new OracleParameter(":memName", realName),
                                          new OracleParameter(":sex",sex),new OracleParameter(":mobile",mobile),new OracleParameter(":comPhone",comPhone),
                                          new OracleParameter(":homePhone",homePhone),new OracleParameter(":mail",mail),
                                          new OracleParameter(":birthday",timeTemp),new OracleParameter(":detailAdd",address)};
                    
                    int temp = Convert.ToInt32(SQLHelper.ExecuteNonQuery(conStr, CommandType.Text, sqlStr, prams));错误信息:ORA-01858: 在要求输入数字处找到非数字字符
      

  4.   


    参数数组改成:
     OracleParameter[] prams = { new OracleParameter(":memId", mem.MemberNo), new OracleParameter(":memName", realName),
                                          new OracleParameter(":sex",sex),new OracleParameter(":mobile",mobile),new OracleParameter(":comPhone",comPhone),
                                          new OracleParameter(":homePhone",homePhone),new OracleParameter(":mail",mail),
                                          new OracleParameter(":birthday","to_date(:birthday,'yyyy-mm-dd')"),new OracleParameter(":detailAdd",address)};错误信息:ORA-01858: 在要求输入数字处找到非数字字符
      

  5.   

    这个是你输入参数输入错了  你有个number类型的字段 但是你输入了非数字字符 你检查检查看看
      

  6.   

    sqlStr = @"update VW_MEMBER_INFO_WEB set                     mem_name=:memName,sex=:sex,mobile=:mobile,COMPANY_PHONE=:comPhone,
                        HOME_PHONE=:homePhone,MAIL=:mail,BIRTHDAY=to_date(:birthday,'yyyy-mm-dd'),
                        DETAIL_ADDR=:detailAdd where mem_id=:memId";
    改下sqlstr.变量还是用'1982-07-18',字符串就可以了
      

  7.   


    正如你说的那样!!!
    谢谢了!!!我有一个奇怪的问题:
    比如:
    数据库里面的字段是datetime类型的。
    如果你直接insert into tableName (colu1) values('to_date('2011-01-10','yyyy-mm-dd')')
    但是如果你用参数化传参的话,value1值就必须Convert.ToDateTime(value1)了。
    奇怪,有人能说说道理吗??