
首先这个问题涉及到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中数据库的默认字符集和校对规则有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)