没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2015-01-14 09:34:49.000|阅读 2179 次
概述:Java程序员不仅要具备扎实的Java编程能力,在日常的工作当中往往还要涉及到其他语言的基础知识,尤其是SQL。那么哪些常见的SQL错误是程序员们容易犯的呢?让我们一起来看看吧!
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
你可能看到Java程序员每周的工作是编码开发一个可伸缩的Web应用程序,或创建一个动态的网站,或者开发高效的电子商务产品页面,也可能是开发一个Android应用程序等等。但是,即使他们致力于不同的项目,却往往都有一个共同点,那就是编程!
他们的职业要求长时间的工作来积累更多的编程知识。Java程序员还需要了解项目的需求、设计和开发一个属于自己的原型项目。为了使自己始终跟随行业变换的脚步,他们还必须具备其他语言的基础知识,比如HTML、SQL等等。
Java程序员的职业生涯并不是一帆风顺的,他们必须尝试每一次的挑战,即使是最好的程序员,有时在编程的过程中也难免会犯一些不可避免的错误。举个例子,在编写SQL语句时,有些错误却是绝对可以避免的。在这里,小编就为各位程序员列举一些常见的SQL错误。
SELECT TOP 3 common_mistakes FROM SQLProgrammingMistakes;
上述查询的结果如下:
在编写SQL语句时,Java程序员最常见和最大的一个错误就是忘记批处理。在表中编写成千上万的INSERT语句这确实不是一个好主意,程序员应该使用单个的SQL语言来创建一个绑定不同的参数的批处理INSERT语句。执行批处理的速度将比单个执行快得多。
我们来看看以下一个例子:
String [] queries = { "INSERT INTO Employee { Eno, Ename, Ecode, EDept} values ('1', 'Allen', 'abc', 'Sales')", "INSERT INTO Employee { Eno, Ename, Ecode, EDept} values ('2', 'Max', '102', 'Marketing')", "INSERT INTO Employee { Eno, Ename, Ecode, EDept} values ('3', 'Ward', 'xyz', 'Sales')", "INSERT INTO Employee { Eno, Ename, Ecode, EDept} values ('4', 'Sam', '55', 'Marketing')", }; Connection connection = new getConnection(); Statement statement = connection.createStatement(); for (String query : queries ) { statement.execute(query); } statement.close(); connection.close();
这是一个糟糕的代码,在数据库中每一行INSERT语句都需要单独来执行。发送一批INSERT语句到数据库中一气呵成:
import java.sql.Connection; import java.sql.Statement; //… Connection connection = new getConnection(); Statement statement = connection.createStatement(); For (Employee employee: employees){ String query = "INSERT INTO Employee (Eno, Ename, Ecode, Edept) values (' " + Employee. getEno() + "', '" + Employee.getEname() +"', '" + Employee.getEcode() + "', '" + Employee.getEdept() + "')"; statement.addBatch(query); } statement. executeBatch(); statement.close(); connection.close();
插入大型数据集时,批处理是非常重要的。为了显著提升性能,程序员应该尽量在批处理模式下运行一条语句。执行批量插入的另外一种方法是使用PreparedStatement对象。然而批处理不仅仅只是局限于INSERT语句,你还可以利用它来执行更新、删除和声明等操作。
并不是所有的Java程序员都了解SQL。在SQL查询中可以用很多种方式来得到相同的结果,但是程序员应该始终遵循最快的响应最佳的方式。
例如一个Java程序员被要求从Employee表中检索所有名字以'A'打头的员工,通常他们喜欢使用LEFT函数返回雇员名字的第一个字符:
SELECT Ename FROM Employee WHERE LEFT (Ename,1) = ‘A’;
但是这是不正确的。在上面的查询中,数据库系统将扫描整个表来找到所需的信息。不使用索引,因此会花费大量的时间在执行查询上。相反,程序员应该使用查询检索结果:
SELECT Ename FROM Employee WHERE Ename LIKE ‘A%’;
上述查询将利用指数快速有效地检索数据。所以在一般情况下,如果该DBMS引擎可以采取一个索引,程序员应尽可能使用可优化搜索的词来加快查询的执行。
很多Java程序员认为查询通常的处理顺序是如下:FROM,WHERE,GROUP BY,HAVING,SELECT。上述顺序列除了用于执行查询的逻辑顺序。从逻辑上讲,FROM子句首先处理,定义了源数据表中的检索数据;接下来就是WHERE,随后就是GROUP BY等等。然在在物理上来说,查询处理是不同的。谓词的评估顺序通常是由各种规则和数据库版本来改变的。
例如下面的Employee表:
Eno | Ename | Ecode | Edept |
1 | Allen | abc | Sales |
2 | Max | 102 | Marketing |
3 | Ward | 55 | Marketing |
4 | Sam | xyz | Sales |
在给定的上表中,要检索所有销售部门员工的雇员代码大于100的。通常在这种情况下程序员将以下面的方式查询表:
SELECT Eno, Ecode AS Employee_No,Employee_Code FROM Employee WHERE Edept LIKE 'M%' AND CAST (Ecode AS INT) > 100;
然而,上面的查询结果错误:
“Conversion failed when converting the varchar value ‘abc’ to data type int”
查询失败的原因正是前面所指出的,没有规定执行谓词的顺序。在这种情况下,第二谓词求值首先导致转换错误。
相反使用CASE表达式,这里将保证只有合法的数值将被转换为int类型:
SELECT Eno, Ecode AS Employee_No,Employee_Code FROM Employee WHERE Edept LIKE 'M%' AND CASE WHEN Ecode NOT LIKE '%[^0-9]%' THEN CAST (Ecode AS INT) END>100;
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@dpuzeg.cn
文章转载自:慧都控件网Parasoft Jtest以其强大的“度量+去重”功能组合,为开发者提供了一种高效、可靠的解决方案。通过深入洞察代码的本质,优化代码结构,Jtest不仅有助于提升开发效率,还能显著提高代码质量,减少软件缺陷的产生。
Parasoft C/C++test 通过静态分析、安全漏洞检测和行业标准合规检查,帮助开发者在编码阶段即时锁定缺陷,大幅减少后期返工,确保了代码安全性与行业合规性,真正实现开发效率与产品质量的双重提升。
MineRP选择了Tech Soft 3D的HOOPS Visualize作为其平台的图形引擎。HOOPS Visualize以其卓越的性能、丰富的功能和优质的技术支持,成为MineRP平台可视化模块的核心。
作为一款领先的3D图形软件开发工具包(SDK),HOOPS Visualize为CAD、CAE、CAM、BIM等领域的应用程序提供了卓越的可视化能力。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@dpuzeg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢