从数据类型 varchar 转换为 numeric 时出错.怎么解决
2个回答
展开全部
首先这个问题涉及到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.
祝你在使用中得到更快的技术提升。同时代码有很好的可读性。
既然你使用了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.
祝你在使用中得到更快的技术提升。同时代码有很好的可读性。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询