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"格式
你的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)了。
奇怪,有人能说说道理吗??