我在使用 JTDS 读取 SQL Server 2005 数据库中的 View 时遇到问题,并且在寻找解决方案时遇到了严重的问题。
查询只是选择 View 中的所有内容:
SELECT * FROM encounters_view WHERE patient_id = ?
此行抛出异常:
rset = selectAllEncountersByPatientId.executeQuery();
堆栈跟踪如下:
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 可能包含包含不会转换为十进制字符的数字(例如 ',' 或 '. ').
关于java - (JTDS) java.sql.SQLException : Error converting data type nvarchar to numeric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12862881/