GVKun编程网logo

Jdbctemplate查询字符串:EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0

13

对于Jdbctemplate查询字符串:EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于andro

对于Jdbctemplate查询字符串:EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0感兴趣的读者,本文将会是一篇不错的选择,并为您提供关于android.database.StaleDataException: Attempted to access a c、Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully rece...、could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException:、django.template.exceptions.TemplateDoesNotExist: login.html 错误处理的有用信息。

本文目录一览:

Jdbctemplate查询字符串:EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0

Jdbctemplate查询字符串:EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0

我正在使用Jdbctemplate从数据库中检索单个String值。这是我的方法。

    public String test() {        String cert=null;        String sql = "select ID_NMB_SRZ from codb_owner.TR_LTM_SLS_RTN              where id_str_rt = ''999'' and ID_NMB_SRZ = ''60230009999999''";        cert = (String) jdbc.queryForObject(sql, String.class);         return cert;    }

在我的情况下,完全可以在查询中不击中,所以我的问题是如何解决以下错误消息。

EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0

在我看来,我应该只返回null而不是抛出异常。我怎样才能解决这个问题?提前致谢。

答案1

小编典典

JdbcTemplatequeryForIntqueryForLongqueryForObject所有这些方法都希望执行的查询将仅返回一行。如果没有行或多于一行,将导致IncorrectResultSizeDataAccessException。现在正确的方法不是捕获此异常或EmptyResultDataAccessException,而是确保你使用的查询仅返回一行。如果根本不可能,则使用query method代替。

List<String> strLst  = getJdbcTemplate().query(sql,new RowMapper {  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {        return rs.getString(1);  }});if ( strLst.isEmpty() ){  return null;}else if ( strLst.size() == 1 ) { // list contains exactly 1 element  return strLst.get(0);}else{  // list contains more than 1 elements  //your wish, you can either throw the exception or return 1st element.    }

android.database.StaleDataException: Attempted to access a c

android.database.StaleDataException: Attempted to access a c

10-17 15:08:53.084: E/AndroidRuntime(30153): FATAL EXCEPTION: main10-17 15:08:53.084: E/AndroidRuntime(30153): android.database.StaleDataException: Attempted to access a cursor after it has been closed.10-17 15:08:53.084: E/AndroidRuntime(

10-17 15:08:53.084: E/AndroidRuntime(30153): FATAL EXCEPTION: main10-17 15:08:53.084: E/AndroidRuntime(30153): android.database.StaleDataException: Attempted to access a cursor after it has been closed.10-17 15:08:53.084: E/AndroidRuntime(30153): at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:64)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.database.BulkCursorToCursorAdaptor.requery(BulkCursorToCursorAdaptor.java:133)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.database.CursorWrapper.requery(CursorWrapper.java:186)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.app.Activity.performRestart(Activity.java:5161)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.app.ActivityThread.handleSleeping(ActivityThread.java:3280)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.app.ActivityThread.access$2700(ActivityThread.java:141)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1413)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.os.Handler.dispatchMessage(Handler.java:99)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.os.Looper.loop(Looper.java:137)10-17 15:08:53.084: E/AndroidRuntime(30153): at android.app.ActivityThread.main(ActivityThread.java:5041)10-17 15:08:53.084: E/AndroidRuntime(30153): at java.lang.reflect.Method.invokeNative(Native Method)10-17 15:08:53.084: E/AndroidRuntime(30153): at java.lang.reflect.Method.invoke(Method.java:511)10-17 15:08:53.084: E/AndroidRuntime(30153): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)10-17 15:08:53.084: E/AndroidRuntime(30153): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)10-17 15:08:53.084: E/AndroidRuntime(30153): at dalvik.system.NativeStart.main(Native Method)

发生原因:

我在代码中使用了Context.managedQuery(),Cursor.close()方法,但是在android 4.0及其以上的版本中,Cursor会自动关闭,不需要用户自己关闭。

解决方法:

在Cursor.close()方法上加上

  1. if(VERSION.SDK_INT 14) {  
  2.     cursor.close();  
  3.  }  

Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully rece...

Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully rece...

今天访问已经架上服务器的网站,报错:

Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 
The last packet successfully received from the server was 78,050,512 milliseconds ago.
The last packet sent successfully to the server was 78,050,512 milliseconds ago.
is longer than the server configured value of ''wait_timeout''.
You should consider either expiring and/or testing connection validity before use in your application,
increasing the server configured values for client timeouts,
or using the Connector/J connection property ''autoReconnect=true'' to avoid this problem.
翻译过来:上次访问时,发送的包已经多少多少秒了,比设置的‘wait_timeout’要长,建议修改 autoReconnect=true。

解决方案:
修改或添加三个参数:
将testConnectionOnCheckout 设为 false
将testConnectionOnCheckin 设为 true
将idleConnectionTestPeriod 设为 30,这个数字要根据项目情况设定,比8小时小就好

具体原理参考:https://blog.csdn.net/frankcheng5143/article/details/50589264

could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException:

could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException:

向mysql插入数据时出现错误
原因:mysql表里的字段太短:Varchar(11),把它改大一点就好了

django.template.exceptions.TemplateDoesNotExist: login.html 错误处理

django.template.exceptions.TemplateDoesNotExist: login.html 错误处理

 

登陆 Login 界面时候报错

Internal Server Error: /login/
Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/usr/local/python3/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/python3/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/python/project/MyCrazyeyes/web/views.py", line 45, in login
    return render(request, ''login.html'')
  File "/usr/local/python3/lib/python3.6/site-packages/django/shortcuts.py", line 36, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/usr/local/python3/lib/python3.6/site-packages/django/template/loader.py", line 61, in render_to_string
    template = get_template(template_name, using=using)
  File "/usr/local/python3/lib/python3.6/site-packages/django/template/loader.py", line 19, in get_template
    raise TemplateDoesNotExist(template_name, chain=chain)
django.template.exceptions.TemplateDoesNotExist: login.html
[03/Feb/2018 07:39:49] "GET /login/?next=/ HTTP/1.1" 500 76432

 

在 setting.py 下 DIRS 如下所示

TEMPLATES = [
    {
        ''BACKEND'': ''django.template.backends.django.DjangoTemplates'',
        ''DIRS'': [],
        ''APP_DIRS'': True,
        ''OPTIONS'': {
            ''context_processors'': [
                ''django.template.context_processors.debug'',
                ''django.template.context_processors.request'',
                ''django.contrib.auth.context_processors.auth'',
                ''django.contrib.messages.context_processors.messages'',
            ],
        },
    },
]

 

在 setting.py 重新设置下 DIRS 如下所示,则问题解决

TEMPLATES = [
    {
        ''BACKEND'': ''django.template.backends.django.DjangoTemplates'',
#        ''DIRS'': [],
        ''DIRS'': ["%s/%s" %(BASE_DIR,''templates''),],
        ''APP_DIRS'': True,
        ''OPTIONS'': {
            ''context_processors'': [
                ''django.template.context_processors.debug'',
                ''django.template.context_processors.request'',
                ''django.contrib.auth.context_processors.auth'',
                ''django.contrib.messages.context_processors.messages'',
            ],
        },
    },
]

 

另外需要确保 templates 目录下确实是有 login.html 文件

[python@qinhan templates]$ pwd
/home/python/project/MyCrazyeyes/templates
[python@qinhan templates]$ ls
login.html
[python@qinhan templates]$ 

 

关于Jdbctemplate查询字符串:EmptyResultDataAccessException:错误的结果大小:预期为1,实际为0的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android.database.StaleDataException: Attempted to access a c、Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully rece...、could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException:、django.template.exceptions.TemplateDoesNotExist: login.html 错误处理等相关知识的信息别忘了在本站进行查找喔。

本文标签: