关于JDBC使用命名参数(named parameters)进行存储过程调用的问题
2010-01-14 10:49
776 查看
使用命名参数(named parameters)进行存储过程调用, 会使代码更具可读性,参数的设置也更灵活。
JDBC 通过 DatabaseMetaData.supportsNamedParameters() 方法来确认驱动程序和 RDMS 是否支持命名参数。
如果支持,那么我们在代码里就可以用
CallableStatement.setInt(String, int) 方法来代替 CallableStatement.setInt(int, int)方法 来设置存储过程参数,CallableStatement.setInt(String, int)方法用的就是我们所说的命名参数。
注:sql2000 不支持命名参数的调用, sql2005 支持。
另:
如果存储过程要新加参数,为了提高系统的兼容性,强烈建议新加的存储过程参数放在原有参数的后面,并且提供默认值。否则,以前的程序可能会运行不正常。
参阅:
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.sqlserver.jdbcdriver&tid=f9379639-9e92-4068-8eee-31525d4e5d5c&cat=en_US_cdfbaf16-3704-4bd0-8e0f-21a2b079e161&lang=en&cr=US&sloc=&p=1
http://zhang-yingjie-qq-com.javaeye.com/blog/327422
JDBC 通过 DatabaseMetaData.supportsNamedParameters() 方法来确认驱动程序和 RDMS 是否支持命名参数。
如果支持,那么我们在代码里就可以用
CallableStatement.setInt(String, int) 方法来代替 CallableStatement.setInt(int, int)方法 来设置存储过程参数,CallableStatement.setInt(String, int)方法用的就是我们所说的命名参数。
注:sql2000 不支持命名参数的调用, sql2005 支持。
另:
如果存储过程要新加参数,为了提高系统的兼容性,强烈建议新加的存储过程参数放在原有参数的后面,并且提供默认值。否则,以前的程序可能会运行不正常。
参阅:
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.sqlserver.jdbcdriver&tid=f9379639-9e92-4068-8eee-31525d4e5d5c&cat=en_US_cdfbaf16-3704-4bd0-8e0f-21a2b079e161&lang=en&cr=US&sloc=&p=1
http://zhang-yingjie-qq-com.javaeye.com/blog/327422
相关文章推荐
- 关于调用存储过程获取参数返回值和输出参数注意的问题
- 带输出参数的存储过程的使用及在C#中调用问题
- 关于ASP.NET 中使用Ajax进行异步调用问题,前台参数无法跳转到后台,提示500 internal server error
- 关于在SQLSERVER2000中存储过程调用存储过程返回参数的问题
- 带输出参数的存储过程的使用及在C#中调用问题
- 关于sqlhelper调用存储过程获取参数返回值和输出参数的问题
- 带输出参数的存储过程的使用及在C#中调用问题
- 终于解决了--调用存储过程提示传递参数多的问题!
- 关于存储过程的参数和ASP优化问题
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- 让存储过程中的查询语句按照不同查询条件进行优化(即每次查询都使用参数option(recompile))
- 关于C#调用存储过程,带输出参数,存储过程
- 关于 "java 如何调用Oracle存储过程中的动态refcursor结果集" 问题
- 关于EF调用存储过程碰到的问题解决过程
- 如何使用 ADO.NET 和 Visual C# .NET 调用带参数的存储过程
- Oracle复合类型参数的存储过程以及JDBC调用
- jdbc调用有参数输出的存储过程
- 关于在 oracle trigger(insert)事件中调用存储过程的问题
- 使用JDBC调用存储过程
- 在C#中使用EntityFramework(EF)生成实体进行存储过程的调用