Java com.microsoft.sqlserver.jdbc.SQLServerException: 在将varchar 值 ‘xx‘ 转换成数据类型 int 时失败问题解决

问题描述:

SQLException: com.microsoft.sqlserver.jdbc.SQLServerException: 在将varchar 值 '文艺演出' 转换成数据类型 int 时失败。Msg 245, Level 16, State 1, 在将varchar 值 '文艺演出' 转换成数据类型 int 时失败。

问题分析:

1、在SQL Server中int类型的值跟varchar类型的值比较,会将nvarchar类型的值先转为int类型,这样会报错。

select * 
from t_uesr
where username=1

解决办法:将int类型的值转为varchar类型即可。

select * 
from t_uesr
where username=cast(1 as varchar(12));

2、数据库表字段类型为varchar类型,但是实体类中表对应的变量类型为int,导致报错。

解决办法: 实体类中表对应的变量类型改为String即可。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java调用SQL Server存储过程的步骤如下: 1. 导入JDBC驱动包。下载并导入SQL Server JDBC驱动包,以便Java程序可以连接到SQL Server数据库。 2. 创建数据库连接。使用Java中的JDBC API创建数据库连接,包括连接字符串、用户名和密码等信息。 3. 创建CallableStatement对象。使用Java中的JDBC API创建CallableStatement对象,它用于执行存储过程。 4. 设置参数。使用CallableStatement对象的setXXX()方法设置输入参数、输出参数和返回类型等信息。 5. 执行存储过程。使用CallableStatement对象的execute()方法执行存储过程。 6. 处理返回结果。使用CallableStatement对象的getXXX()方法获取存储过程的返回结果,包括输出参数和返回等信息。 示例代码: ```java import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Types; public class CallSP { public static void main(String[] args) throws Exception { // 创建数据库连接 Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;databaseName=mydb"; String user = "sa"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); // 创建CallableStatement对象 String sql = "{call myproc(?, ?)}"; CallableStatement cs = conn.prepareCall(sql); // 设置输入参数 cs.setInt(1, 100); // 设置输出参数 cs.registerOutParameter(2, Types.VARCHAR); // 执行存储过程 cs.execute(); // 处理返回结果 String result = cs.getString(2); System.out.println(result); // 关闭数据库连接 cs.close(); conn.close(); } } ``` 在上面的示例中,调用了名为myproc的存储过程,它有一个输入参数和一个输出参数。在执行存储过程之后,通过cs.getString(2)获取输出参数的

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值