可能的错误空sql查询语句大全讲解问题,怎么解决

C语言的空语句会出现什么逻辑错误_百度知道
C语言的空语句会出现什么逻辑错误
我有更好的答案
#include&stdio.h&void main(){int i,i=1;sum=0;while(i&=100);//这个有一个空语句,造成死循环。{sum+=i;i++;}printf(&%d\n&,sum);}
资深电脑人
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在Java中如何避免“!=null”式的判空语句? - ImportNew
| 标签: , ,
问题描述:
我整天都是在跟Java打交道。我在Java开发中最常用的一段代码就是用object != null在使用对象之前判断是否为空。这么做是为了避免NullPointerException。但是我发现这样检测代码实在是太丑了,而且及其不可读。
那有没有一种优雅的替代方法呢?
问题补充:
再清晰化一下我的问题,我是在强调在使用对象的属性或者方法之前,确保它不为空的重要性,就像下面这段代码一样:
if (someobject != null) {
someobject.doCalc();
这么些我是为了避免抛NullPointerException异常,我不知道这个对象是不是空的。正由于这些判空代码,导致我的代码血花四溅,相当惨不忍睹。
最佳解答:
对于我来说,这就是一个初级开发者走向中级开发者过程中有时候都会碰到的合理问题:他们不知道也不太信任自己所使用的约定,并且过度的去检查空值情况。另外,当他们写代码的时候,总是会让方法去返回一些值,因此就可以由方法调用方去检查空值了。
换句话说,有两种情况会出现判空语句:
null返回值按找约定是正常的返回值
null返回值不是正常的返回值
第二种情况很简单。可以使用assert来判断或者是允许程序报错(即抛NullPointerException)。断言是一个被充分利用的Java特性,在1.4版本中加入了这个特性。语法如下:
assert *&condition&*
assert *&condition&* : *&object&*
object的toString()输出会被包括在错误信息中。
当判断条件为false的时候assert语句就会抛出Error(AssertionError)错误。在默认情况下,Java虚拟机是不会理会断言语句的。当需要使用此特性的时候可以给JVM虚拟机传入-ea参数来启用它。同时也可以针对单个的Java类或者是包来使用断言特性。这就意味着可以在开发测试的过程中来使用断言验证代码,而在生产环境就关闭这个特性,尽管我已经测试显示断言功能并不会对应用程序产生任何影响。
这个案例中不使用断言是可以的,因为代码本身就是会报错的,就像假如你使用断言之后一定会抛出Error错误一样。用和不用的区别就是可以尽早的去发现错误,用更有意义,更加丰富的信息来描述这个错误,这样你就可以帮助你弄清楚为什么会发生这种错误(假如这种错误你确实不想它发生)。
第一种情况就要难解释一点了。如果你对你调用的代码没有控制权的话,你就惨了。如果null返回值是正常的话,那你就必须去检查它了。
如果可以控制你调用代码(当然常常还是有控制权的),那就是另一回事儿了。还是尽量的不去使用null返回值。对于返回集合的方法很简单,只需要返回空的集合就可以了,而不是null。
对于返回值不是集合的方法,就要麻烦一点了。假如碰到下面的情况:
public interface Action {
void doSomething();
public interface Parser {
Action findAction(String userInput);
Parse接口从标准输入中接受指令,并去执行一些操作,可能会去用这个接口实现一个命令行工具。那现在就有个约定当没找到合适的操作指令时,就返回空值。那这儿就得去验空值了。
一种可选办法就是不使用空返回值,而是:
public class MyParser implements Parser {
private static Action DO_NOTHING = new Action() {
public void doSomething() { /* do nothing */ }
public Action findAction(String userInput) {
if ( /* we can't find any actions */ ) {
return DO_NOTHING;
来对比下下面这两种:
Parser parser = ParserFactory.getParser();
if (parser == null) {
// now what?
// 这儿当然得空值判断一下啊,这儿根本就不应该出现空值
Action action = parser.findAction(someInput);
if (action == null) {
// do nothing
action.doSomething();
ParserFactory.getParser().findAction(someInput).doSomething();
明显下面这种写法更加简明清晰。
其实在findAction()方法中直接抛出更加有意义的错误信息是完全可以的。特别是你在依赖用户输入的应用中。对于findAction()方法来说抛出一个带有说明的异常要比光秃秃的抛出一个NullPointerException要好的多。
ParserFactory.getParser().findAction(someInput).doSomething();
} catch(ActionNotFoundException anfe) {
userConsole.err(anfe.getMessage());
要是你觉得使用try/catch机制比较丑的话,那就给用户比较有意义的反馈。
public Action findAction(final String userInput){
/* Code to return requested Action if found */
return new Action(){
public void doSomething(){
userConsole.err(&Action not found: &+userInput);
原文链接:
- 译文链接: [ 转载请保留原文出处、译者和译文链接。]
关于作者:
新浪微博:,个人主页
Map是静态的,是类成员变量
tony.chenjy
关于ImportNew
ImportNew 专注于 Java 技术分享。于日 11:11正式上线。是的,这是一个很特别的时刻 :)
ImportNew 由两个 Java 关键字 import 和 new 组成,意指:Java 开发者学习新知识的网站。 import 可认为是学习和吸收, new 则可认为是新知识、新技术圈子和新朋友……
新浪微博:
推荐微信号
反馈建议:ImportNew.
广告与商务合作QQ:
– 好的话题、有启发的回复、值得信赖的圈子
– 写了文章?看干货?去头条!
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 活跃 & 专业的翻译小组
– 国内外的精选博客文章
– UI,网页,交互和用户体验
– JavaScript, HTML5, CSS
– 专注Android技术分享
– 专注iOS技术分享
– 专注Java技术分享
– 专注Python技术分享
& 2018 ImportNew可空字段和SQL为空的问题问题,怎么解决_百度知道
可空字段和SQL为空的问题问题,怎么解决
我有更好的答案
没明白你想干什么,你是想这个字段不能为空吗?还是想查询为空的字段,想查不能为空的是select * from 表名 where 字段名 is null字段不能为空,你直接改表就好了
采纳率:70%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。空指针错误原因找到了,可是不知道该怎么样解决
[问题点数:30分,结帖人surf182]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:513
本版专家分:4676
本版专家分:0
本版专家分:529
本版专家分:0
本版专家分:4676
本版专家分:1401
2009年12月 扩充话题大版内专家分月排行榜第三
本版专家分:1688
本版专家分:601
本版专家分:601
本版专家分:100
本版专家分:5
本版专家分:1064
本版专家分:548
匿名用户不能发表回复!|
其他相关推荐
当初因为要将输入和输出分离,从而以为将那些代码直接带走就可以。但在这发生了空指针的现象,十分让人恼火的是这个错误是时不时才出现,导致不知哪里出现这个问题。最后才发现是当时做了一个断线重连的机制,导致当初的对象删除,从而使指针指向空的对象,这个坑因为当时后面加上需求,忽略了这种情况。
当初为了保护资源,只返回个限定的指针,因为当初是在整个对象之内,所以就算断线重连也不会发生这种情况,在此写下,以备以
driver 没传递正确 ;用的变量有null值;
运行环境:MyEclipse 2016 CIJSP登陆页面用&jsp:forward page=URL&出现问题:HTTP Status 500 - /forward.jsp (line: 2117, column: 5) Expecting &jsp:param& standard action with &name& and &value& attributes
type Exception r
/**不懂为什么会引发空指针异常
* Description:
* &br/&&/a&
* @version 1.0
class Base
public Base()
public void test()
//①号test方法
一般报java.lang.NullPointerException的原因有以下几种:
·字符串变量未初始化;
·接口类型的对象没有用具体的类初始化,比如:
List lt = new ArrayList(); 则不会报错了
·当一个对象的值为空时,你没有判断为空的情况。
你可以试着把下面的代码前加一行代码:
if(rb!=null);
有时检察输入的String类型变量str是否为合法输入时,使用判断:
if( str!= null && !str.isEmpty() )
而不能写成 if( !str.isEmpty() && str!= null )这样的话程序因为优先执行左边的判断语句,从而导致NullPointerException 的发生.
空指针异常的出现,基本上不能怪别人,只能怪自己的编码形式有问题
public class DocumentPressUCCImpl
extends TaskUCCImpl implements IDocumentPressUCC 中,已经继承了父类 TaskUCCImpl 配置文件中:
class=&a.DocumentPressUCCImpl&
parent=&taskUCC& &添加
parent=&taskUCC&属性。
引用了上面两个USEBEAN
其中jdbc这个是连接sqlserver数据库的,,能成功连接,,,但是当我调用 login.jsp这个JSP页面时却显示错误!!(还有一点..这个网站的所有代码连接oracle数据库时却能连上,连接sqlserver时就时出错...提示空指针..不懂..请高手指教下)下面是代码:
l.con=j.getConnection()
先加个判断是否为空
arrayList != null&&arrayList.size() != 0
1.今天c3p0报空指针错误,数据源的XML文件中,URL、用户名密码均没有问题,花费了很长时间,才发现是XML文件存放的路径不正确
c3p0数据源应放置在src根目录下或相应jar文件中哥们,我有个问题,就是一个关于以前你提问的那个 sql语句如果条件含有空值怎么办的问题,我qq_百度知道
哥们,我有个问题,就是一个关于以前你提问的那个 sql语句如果条件含有空值怎么办的问题,我qq
我有更好的答案
采用“where 1=1; ”这种形式,很好用的,发你一段我的代码供参考,有问题可以QQ.
//接受上页数据
String zclx=request.getParameter(&zclx&);//资产类型
String szbm=request.getParameter(&szbm&);//所在部门
String bgr=request.getParameter(&bgr&);//保管人
String gzfs=request.getParameter(&gzfs&);//购置方式
String zcbh=request.getParameter(&zcbh&);
//资产编号
String jsbh=request.getParameter(&jsbh&); //技术编号//
---&根据接受的数据做条件开始查询,此部分为重要代码,切记!!!
String SqlString=&select * from dshsb where 1=1&;
if(!zclx.equals(&&))
SqlString=SqlString+&and Zclx='&+zclx+&'&;
if(!szbm.equals(&&))
SqlString=SqlString+&and Szbm='&+szbm+&'&;
if(!bgr.equals(&&))
SqlString=SqlString+&and Bgr='&+bgr+&'&;
if(!gzfs.equals(&&))
SqlString=SqlString+&and Gzfs='&+gzfs+&'&;
if(!zcbh.equals(&&))
SqlString=SqlString+&and Zcbh='&+zcbh+&'&;
if(!jsbh.equals(&&))
SqlString=SqlString+&and Jsbh='&+jsbh+&'&;
&----多重条件下的查询实现方法
ResultSet rs=db.executeQuery(SqlString);//定义页面上要显示的查询结果
String zclx0=&&;
String zcbh0=&&;
String jsbh0=&&;
String zcyz0=&&;
String ysrq0=&&;
String szbm0=&&;
String bgr0=&&;
String gzfs0=&&;
String xcfd0=&&;
String sblx10=&&;
String sblx20=&&;
String bz0=&&;%&
来自:求助得到的回答
采纳率:42%
为您推荐:
其他类似问题
sql语句的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 常用sql语句面试题 的文章

 

随机推荐