3

JTDS を使用した SQL Server 2005 データベースのビューからの読み取りに問題があり、解決策を見つけるのに深刻な問題があります。

クエリは、ビュー内のすべてを選択するだけです:

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)

どんな助けでも大歓迎です。

4

1 に答える 1

4

これは、異なるデータ型 (1 つの nvarchar ともう 1 つの数値) の 2 つの列を結合していることが原因である可能性が最も高く、nvarchar には、10 進数に変換されない文字 (「,」または「.」など) を含む数値が含まれている可能性があります。

于 2012-10-12T16:11:51.223 に答える