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"格式
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"格式
解决方案 »
- Oracle的SYSDATE与TIMESTAMP
- oracle存储过程中如果返回游标类型(REF CURSOR)用C++或者Qt的什么变量获得?
- 如何 缩小表空间,或者缩小数据文件?
- 还是存储过程的执行问题
- 关于select for update
- VC连接oracle数据库的问题(在线等待,在线给分)
- SQL Server 是否有象Oracle一样的分区功能
- 有高手知道在oci中如何调用plsql过程块吗?
- send one complex porblem on 'sql ' to our friends ,come here plese,baby,baby!!
- 引号内的字符串没有正确结束
- oracle表数据累加统计问题,很急,希望指点
- where 1=1的问题
你的timeTemp才是date类型的
这种情况你可以设置断点 看下你的语句是什么样的
更改后的代码:
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: 在要求输入数字处找到非数字字符
参数数组改成:
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: 在要求输入数字处找到非数字字符
HOME_PHONE=:homePhone,MAIL=:mail,BIRTHDAY=to_date(:birthday,'yyyy-mm-dd'),
DETAIL_ADDR=:detailAdd where mem_id=:memId";
改下sqlstr.变量还是用'1982-07-18',字符串就可以了
正如你说的那样!!!
谢谢了!!!我有一个奇怪的问题:
比如:
数据库里面的字段是datetime类型的。
如果你直接insert into tableName (colu1) values('to_date('2011-01-10','yyyy-mm-dd')')
但是如果你用参数化传参的话,value1值就必须Convert.ToDateTime(value1)了。
奇怪,有人能说说道理吗??