数据库
首页 > 数据库> > (JTDS)java.sql.SQLException:将数据类型nvarchar转换为数值时出错

(JTDS)java.sql.SQLException:将数据类型nvarchar转换为数值时出错

作者:互联网

我在使用JTDS从SQL Server 2005数据库中的视图中读取时遇到麻烦,并且在找到解决方案时遇到了严重的问题.

该查询只是选择视图中的所有内容:

SELECT * FROM encounters_view WHERE patient_id = ?

此行抛出异常:

rset = selectAllEncountersByPatientId.executeQuery();

stacktrace如下:

java.sql.SQLException: Error converting data type nvarchar to numeric.
    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
    at net.sourceforge.jtds.jdbc.TdsCore.isDataInResultSet(TdsCore.java:796)
    at net.sourceforge.jtds.jdbc.JtdsResultSet.<init>(JtdsResultSet.java:134)
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:483)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:776)
    at package_name.ClassName.method(Db_query_class.java:91)
    at package_name.ClassName.main(Main_class.java:36)

查看数据类型:

id (unique(numeric(16,0)),not null)
provId (uniqueid(numeric(16,0)),not null)
patId (uniqueid(numeric(16,0)),not null)
mrn (varchar(20),not null)
visitId (uniqueid(numeric(16,0)),not null)
dttm (datetime, null)
apptType (name(varchar(255)),null)
apptStatus (name(varchar(255)),null)
refProvId (uniqueid(numeric(16,0)),not null)
pay (name(varchar(255)),not null)
zip (char(10),not null)

任何帮助将不胜感激.

解决方法:

这很可能是由于您正在连接不同数据类型的两列(一个nvarchar另一个数字)而引起的-您的nvarchar可能包含包含不会转换为十进制字符的数字(例如’,’或’.’).

标签:jtds,java,sql-server
来源: https://codeday.me/bug/20191031/1978359.html