从数据类型 varchar 转换为 numeric 时出错.怎么解决

 我来答
mischemeXL
2017-05-15 · TA获得超过280个赞
知道小有建树答主
回答量:263
采纳率:0%
帮助的人:166万
展开全部
首先这个问题涉及到ADO编程。
既然你使用了TADOQUERY控件。说明你应该对这方面有一些了解了。
下面我会和你说下调试的方法和问题出现的原因以及解决方案。
1.调试
当你在adoquery1.ExecSQL;这句设置断点,即鼠标停留在该行,按下F5。
右击选择菜单Debug-Evaluate/Modify弹出对话框,在Expression输入adoquery1.sql.text按下回车
Result将显示该数据的内容。你将得到一条完整的数据库操作语句。
复制该SQL语句,到查询分析器或者PL/SQL中执行。将得到错误原因。
2. 原因
由于你的插入语句使用的是含有引号的值,根据标准SQL语法,理解为字符数组。而你数据库中的表字段是数字类型的。由于数据类型不相符。数据库报错。错误原因即你题目中写到的。
3.解决方案
将SQL语句修改一下,或者修改数据库中的表字段结构。(一般情况表结构不会轻易变动,除非是设计时不合理)
4.优化
关于SQL的优化方案有很多类型。例如你题目中的写法,运行时准确性可以保证,但是效率可以提高。比如将sql的拼写使用绑定变量方式。如果批量使用该语句时,可以多条一起提交。优化的原理是利用数据库自带的缓存,提高效率。
另外,表在设计时竟可能不要使用中文。控件名称多使用一些有意义的变量名。比如InsertQuery,Date,Account.
祝你在使用中得到更快的技术提升。同时代码有很好的可读性。
诚恳且华丽丶赤子D
2017-05-14 · TA获得超过154个赞
知道小有建树答主
回答量:222
采纳率:66%
帮助的人:53.4万
展开全部
那你具体执行是哪句呢?从提示来看,你是内容中想要转换的字段包含字母了(因为varchar类型,可是全数字的字串,也可以是数字字母组合的字串,乃至于汉字等等),然后你要把它转换成number型,当然会报错的你看下数据字段有没有使用to_number()这样的形式,如果你要to_number()一个varchar类型的字段,要全是数字的字串是可以的,但是要注意我以上描述的,其中不能有不是数字的字串,如果有,就会报错了。你可以去掉to_number()更新试试。cmd.ExecuteNonQuery()之前的SQL语句呢?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式