当前位置:编程学习 > JAVA >>

JAVA调用sql server2005带参数的存储过程


JAVA调用SQL server2005带参数的存储过程,如果参数中有汉字和空格或任何标点符号都会报异常,这是怎么回事

参数中有汉字的:
String str="空闲";
call = conn.prepareCall("{call test('"+str1+"')}");
com.microsoft.sqlserver.jdbc.SQLServerException: 在此上下文中不允许使用名称 "空闲"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。





参数中带空格的
String str="12   3";
call = conn.prepareCall("{call test('"+str1+"')}");


com.microsoft.sqlserver.jdbc.SQLServerException: '38' 附近有语法错误。




参数中只能是纯字母或者数字,不能有汉字和任何标点符号,怎么处理呢 --------------------编程问答-------------------- --------------------编程问答-------------------- test参数是什么类型的?

call test('"+str1+"')

看你左右括号,一个英文的,一个中文的 --------------------编程问答--------------------
引用 2 楼 fangmingshijie 的回复:
test参数是什么类型的?

call test('"+str1+"')

看你左右括号,一个英文的,一个中文的

终于有回复了
括号是发贴时写错了,参数类型是varchar
问题不知怎么解决呀
--------------------编程问答-------------------- 改为nvvarchar类型的看下 --------------------编程问答-------------------- 不建议这样传参标准的格式应该是

CallableStatement  cstmt  =  con.prepareCall("{call  test(?)}");  
cstmt.registerOutParameter(1,  java.sql.Types.字符串类型的);  
cstmt.executeQuery();  
--------------------编程问答--------------------
引用 4 楼 fangmingshijie 的回复:
改为nvvarchar类型的看下

还是不行,str中包含汉字和空格都不行

String str="空闲";
call = conn.prepareCall("{call test('"+str1+"')}");
com.microsoft.sqlserver.jdbc.SQLServerException: 在此上下文中不允许使用名称 "空闲"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。


参数中带空格的
String str="12   3";
call = conn.prepareCall("{call test('"+str1+"')}");
 
 
com.microsoft.sqlserver.jdbc.SQLServerException: '38' 附近有语法错误。


--------------------编程问答--------------------
引用 5 楼 fangmingshijie 的回复:
不建议这样传参标准的格式应该是Java code?123CallableStatement  cstmt  =  con.prepareCall("{call  test(?)}");  cstmt.registerOutParameter(1,  java.sql.Types.字符串类型的);  cstmt.executeQuery();

这样写的话,参数str放哪里啊

str放到哪啊
call.registerOutParameter(1,java.sql.Types.NVARCHAR);  
--------------------编程问答--------------------
引用 5 楼 fangmingshijie 的回复:
不建议这样传参标准的格式应该是Java code?123CallableStatement  cstmt  =  con.prepareCall("{call  test(?)}");  cstmt.registerOutParameter(1,  java.sql.Types.字符串类型的);  cstmt.executeQuery();

帮忙看下啊,要了命了
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,