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

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

首先这个问题涉及到ADO编程。

既然你使用了TADOQUERY控件。说明你应该对这方面有一些了解了。

下面我会和你说下调试的方法和问题出现的原因以及解决方案。

1调试

当你在adoquery1ExecSQL;这句设置断点,即鼠标停留在该行,按下F5。

右击选择菜单Debug-Evaluate/Modifyd出对话框,在Expression输入adoquery1sqltext按下回车

Result将显示该数据的内容。你将得到一条完整的数据库 *** 作语句。

复制该SQL语句,到查询分析器或者PL/SQL中执行。将得到错误原因。

2 原因

由于你的插入语句使用的是含有引号的值,根据标准SQL语法,理解为字符数组。而你数据库中的表字段是数字类型的。由于数据类型不相符。数据库报错。错误原因即你题目中写到的。

3解决方案

将SQL语句修改一下,或者修改数据库中的表字段结构。(一般情况表结构不会轻易变动,除非是设计时不合理)

4优化

关于SQL的优化方案有很多类型。例如你题目中的写法,运行时准确性可以保证,但是效率可以提高。比如将sql的拼写使用绑定变量方式。如果批量使用该语句时,可以多条一起提交。优化的原理是利用数据库自带的缓存,提高效率。

另外,表在设计时竟可能不要使用中文。控件名称多使用一些有意义的变量名。比如InsertQuery,Date,Account

祝你在使用中得到更快的技术提升。同时代码有很好的可读性。

1、首先,查看MySQL的服务是否存在。如果不存在需要先安装服务。安装服务的方法是进入MySQLServer的安装目录,找到bin目录,然后找到文件mysqldexe,使用命令行运行mysqld--installMySQL57安装服务(如果不成功尝试使用管理员方式运行,MySQL57是服务的名字,默认是MySQL)。

2、如果上述方法安装服务失败,则可采用下述方法安装(成功则跳过此步)。搜索程序“regeditexe”,即注册表编辑器,打开后找到“计算机”——"HKEY_LOCAL_MACHINE"——“SYSTEM”——“”——“Services”,然后在该目录下新建项MySQL57(服务的名字)即可成功建立项目。

3、找到新建的项,然后可以看到其中有ImagePath这一项,这其实是可执行文件的路径。因为MySQL服务是需要靠mysqld这个命令来启动的,所以检查下ImagePath的路径是否正确。路径错误导致启动服务时报错—“无法找到文件”。

4、修改ImagePath的内容为正确的路径值,正确的值是"D:MySQLMySQLServer57inmysqld"--defaults-file="D:MySQLMySQLServer57myini"MySQL是这种形式的,对照一下,如果路径不对,修改过来。

5、重启计算机,再次启动服务,并可以成功运行MySQL服务。

1 ASCII

用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。

编码范围:U+0000 - U+007F

注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编码。

2 UNICODE

用途:用来映射包含 ASCII 以内的其他的所有字符。

编码范围:U+0000 - U+10FFFF

注意:ASCII 是 UNICODE 的子集,ASCII 编码的字符可以无损转换为 UNICODE 编码的字符。

MySQL 常用字符集

1 Latin1

Latin1 是 cp1252 或者 ISO-8859-1 的别名。ISO-8859-1 编码是单字节编码,向下兼容 ASCII。

编码范围:U+0000 - U+00FF

ISO-8859-1 收录的字符除 ASCII 收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。

单字节内的空间都被 ISO-8859-1 编码占用,所以能够用 ISO-8859-1 编码存储、传输其他任何编码的字节流。

比如把一个 Utf8mb4 的编码或者 GBK 的编码存入 Latin1,不会有任何问题。因为 Latin1 保留了原始的字节流,这也就是 MySQL 长期以来把 Latin1 做默认字符集的原因。

但是由于 Latin1 对任何字符都存放字节流,造成了字符个数的浪费。

比如:

CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;

该字段中存储字符个数 UTF8 是 Latin1 的三倍!!!

2 GB18030

GB18030 是中国官方标准字符集,向前兼容 GBK、GB2312,是这两个的超集。用 1、2、4 个字节分别表示一个符号。比如对一般中文字符,默认是用两个字节编码存储。Windows 系统,默认用的就是 GB18030。

若只是存储中文字符,那 GB18030 最佳。

原因有两点:

1)占用空间小,比如比 UTF8 小。

2)存储的汉字根据拼音来排序,检索快。

3 UTF8

UTF8 是 Unicode 的编码实现,可以存储 UNICODE 编码对应的任何字符, 这也是使用最多的一种编码。最大的特点就是变长的编码方式,用 1 到 4 个字节表示一个符号,可以根据不同的符号编码字节长度。

字母或数字用 1 字节,汉字用 3 字节,emoji 表情符号用 4 字节。UTF8 字符集目前是使用最广泛的。

注意!MySQL 里常说的 UTF8 是 UTF8MB3 的别名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 字节 UTF8 字符集!

UTF8MB3 表示最大支持 3 个字节存储字符,UTF8MB4 表示最大 4 个字节存储字符。根据实际需要和未来展望,MySQL 80 已经默认用 UTF8MB4 基础字符集。

以上就是关于从数据类型 varchar 转换为 numeric 时出错.怎么解决全部的内容,包括:从数据类型 varchar 转换为 numeric 时出错.怎么解决、windows10怎么用命令进入mysql数据库(windows启动mysql命令)、MySQL中数据库的默认字符集和校对规则有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9686650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存