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+"')
看你左右括号,一个英文的,一个中文的 --------------------编程问答--------------------
终于有回复了
括号是发贴时写错了,参数类型是varchar
问题不知怎么解决呀
--------------------编程问答-------------------- 改为nvvarchar类型的看下 --------------------编程问答-------------------- 不建议这样传参标准的格式应该是
--------------------编程问答--------------------
CallableStatement cstmt = con.prepareCall("{call test(?)}");
cstmt.registerOutParameter(1, java.sql.Types.字符串类型的);
cstmt.executeQuery();
还是不行,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' 附近有语法错误。
--------------------编程问答--------------------
这样写的话,参数str放哪里啊
--------------------编程问答--------------------
str放到哪啊
call.registerOutParameter(1,java.sql.Types.NVARCHAR);
帮忙看下啊,要了命了
补充:Java , Java EE