在java中通过JDBC连接MySQL执行存储过程时报错:
java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter types. If rights can not be granted, configure connection with "noAccessToProcedureBodies=true" to have driver generate parameters that represent INOUT strings irregardless of actual parameter types.
经过查阅资料得知,JDBC在调用存储过程时不光用户要有execute的权限,还需要对mysql.proc具有访问权限。否则它无法访问metadata。有两种解决方法:
一.给数据库连接设置一个noAccessToProcedureBodies属性,属性值为true,示例如下:
jdbc:mysql://ipaddress:3306/test?noAccessToProcedureBodies=true
网上说设置noAccessToProcedureBodies=true会带来一些影响(未经考证):
1. 调用存储过程时,将没有类型检查,设为字符串类型,并且所有的参数设为int类型,但是在调用registerOutParameter时,不抛出异常。
2. 存储过程的查询结果无法使用getXXX(String parameterName)的形式获取,只能通过getXXX(int parameterIndex)的方式获取。
二.给数据库用户赋权,赋执行mysql.proc表的select权限,示例如下:
GRANT SELECT ON mysql.proc TO 'user'@'localhost';
参考资料:
- http://stackoverflow.com/questions/986628/mysql-java-cant-execute-stored-procedure
- http://space.itpub.net/18945822/viewspace-683363
- http://cau99.blog.51cto.com/1855224/348792
分享到:
相关推荐
本示例中的"struts2+jdbc连接mysql"旨在向初学者展示如何在Struts2框架下,利用JDBC API与MySQL数据库进行交互,实现数据的增删改查操作。以下将详细介绍这一过程中的关键知识点: 1. **Struts2框架基础**: - ...
除了基本的数据库连接,MySQL Connector/J还支持许多高级特性,如事务处理、预编译的SQL语句、批处理操作、存储过程调用等。此外,它还提供了连接池功能,可以提高应用性能,尤其是在高并发场景下。 在开发过程中,...
3. **JDBC(Java Database Connectivity)**:JDBC是Java连接数据库的标准API,它提供了连接、查询、更新和管理数据库的能力。在注册和登录系统中,JDBC用于与MySQL数据库进行交互。在注册过程中,JDBC可以帮助插入...
本篇文章将深入探讨如何使用Android JDBC来直接连接MySQL数据库,以及在这个过程中可能遇到的关键知识点。 首先,理解JDBC的基础是必要的。JDBC是Java语言的一个标准接口,它为各种数据库提供了统一的访问方式。在...
如果连接字符串错误,程序将无法与数据库建立连接,进而无法执行存储过程。此外,还要注意存储过程的输入/输出参数类型和顺序,否则可能导致调用失败。 总的来说,调用存储过程涉及到数据库设计、SQL语法、编程接口...
2. **处理权限**:由于Android应用需要通过网络连接到MySQL服务器,所以需要在AndroidManifest.xml文件中添加INTERNET权限: ```xml ``` 3. **建立连接**:在Android应用中,你可以创建一个线程或者使用...
【JDBC与MySQL简介】 ...JDBC提供了连接、预编译、执行SQL语句以及处理结果集等功能,是Java开发数据库应用的基础工具。在实际应用中,还需要注意优化SQL语句,提升数据库性能,以及处理并发和事务等高级话题。
6. **存储过程**:MySQL支持存储过程,这是一种封装了复杂逻辑的数据库函数,可以在连接包中通过调用其名称和传递参数来执行。 7. **事务处理**:在MySQL 5.6中,支持ACID(原子性、一致性、隔离性和持久性)特性,...
Struts2+JDBC+jsp+mysql 构建的考勤...总结,Struts2+JDBC+jsp+mysql的考勤系统是结合了前端MVC框架、数据访问、动态页面和数据库存储的综合应用,它提供了一个高效、可扩展的解决方案,满足企业对员工考勤管理的需求。
MySQL_连接数据库包是一个专为开发者设计的工具,旨在简化与MySQL数据库的交互过程。这个开发包包含了必要的组件和库,使得程序员能够高效地在各种应用程序中建立、管理和维护数据库连接。MySQL是一种广泛使用的开源...
在Android开发中,有时我们需要实现应用与服务器...在提供的压缩包文件"JDBC4MYSQL-master"中,可能包含了更具体的代码示例和教程,帮助开发者理解这一过程。记得在实际项目中遵循最佳实践,确保应用的性能和安全性。
6. **日志分析**:查看Jira和MySQL的日志文件,它们会提供关于连接失败的详细错误信息,帮助定位问题。 7. **数据库连接测试**:在Jira安装前,先使用MySQL客户端工具(如MySQL Workbench)测试连接,确保服务器...
在Android Studio中连接MySQL数据库与在Eclipse中的过程有所不同,主要因为Android是运行在设备或模拟器上,而这些环境通常不具备直接连接远程数据库的能力。为了解决这个问题,我们需要使用额外的技术和注意事项。...
综上所述,通过JDBC在Android中直接访问MySQL数据库涉及了数据库连接、SQL操作、权限设置、异常处理和资源管理等多个方面,需要注意安全性和性能优化。在实际开发中,这些细节都需要根据具体需求和环境进行细致设计...
2. **ODBC/JDBC**:允许应用程序通过ODBC(Open Database Connectivity)或JDBC(Java Database Connectivity)直接访问数据库并执行存储过程。 3. **数据库连接池**:使用连接池技术,管理和复用数据库连接,提高...
在这样的系统中,开发人员可能会使用JDBC(Java Database Connectivity)作为连接Java和MySQL数据库的桥梁。JDBC是Java的标准API,允许Java程序与各种数据库进行交互,包括执行SQL查询、处理结果集等。在Structs框架...
JDBC是Java连接数据库的标准接口,初学者将学习如何使用JDBC API建立数据库连接、执行SQL语句、处理结果集等,理解数据库操作的基本流程。 在BBS(Bulletin Board System)部分,初学者会接触到论坛系统的常见功能...
在这个过程中,Java通过JDBC(Java Database Connectivity)接口与MySQL进行交互,利用MySQL提供的命令行工具如`mysqldump`和`mysql`来实现数据的导入导出。 首先,我们需要了解JDBC。JDBC是Java平台上的一个标准...
通过分析这些日志,可以找出问题的根源,如JDBC URL错误、权限问题、驱动不兼容等。 6. **最佳实践**: - 使用最新的稳定版SSM组件和MySQL驱动,以获取最新的特性和支持。 - 为数据库连接配置合理的超时和重试...