- PR -

JDBCのException…

投稿者投稿内容
Bob
会議室デビュー日: 2006/11/28
投稿数: 16
投稿日時: 2006-11-28 17:16
現在、JavaとSQLServerを用いてテーブルを参照するだけの簡単なWEBア
プリを構築しておりますが、以下の問題が発生して困っております。

SQLServerにあるテーブルをクエリアナライザなどでSQLを叩けば普通に
参照できますが、JDBCを用いてJavaから参照しようとすると
「オブジェクト名 *** は無効です。」とエラーになります。全ての
テーブルで上記のようなエラーになるわけではなく、JDBC経由で参照で
きるテーブルもあります。(権限も参照できるテーブルと参照できない
テーブルで違いはありません。)

過去に同じような事が発生した方、解決方法などを教えてください。

環境:SQLServer2000
JDBCバージョン:2.2.0037

---以下、Exception内容となります。
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]オブジェクト名 '***(テーブル名)' は無効です。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source)
at ConnectServSample.main(ConnectServSample.java:44)

------ここまで-----

以上、宜しくお願いいたします。


フライト
ベテラン
会議室デビュー日: 2005/03/11
投稿数: 63
お住まい・勤務地: 津田沼・東京
投稿日時: 2006-11-29 12:17
データベース名を確認しましたか?
Bob
会議室デビュー日: 2006/11/28
投稿数: 16
投稿日時: 2006-11-29 12:32
返答ありがとうございます。

>データベース名を確認しましたか?

はい。確認しましたが、間違いはないようです。
コネクションの確立も成功しております。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-11-29 13:13
トレースを見る限り、データベース / Connection 単位の問題ではないでしょう。

引用:

hatsutaさんの書き込み (2006-11-28 17:16) より:

全てのテーブルで上記のようなエラーになるわけではなく、JDBC経由で参照できるテーブルもあります。(権限も参照できるテーブルと参照できないテーブルで違いはありません。)


参照できるテーブルと参照できないテーブルの 「名前」 を提示してください。
それと、確認に使用している SQL クエリも提示してください。

というよりは、'***' が、ワイド文字列かどうかを知りたいのですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Bob
会議室デビュー日: 2006/11/28
投稿数: 16
投稿日時: 2006-11-29 13:29
>参照できるテーブルと参照できないテーブルの 「名前」 を提示してください。
>それと、確認に使用している SQL クエリも提示してください。

参照できるテーブル名:itemdata,keyitem111
参照できないテーブル名:keytable110, keyxitem110
です。
確認にしようしているSQLクエリは
 sql = "select count(*) cnt from hsi.keyxitem110";
となっています。

以上、宜しくお願いいたします。
どらねこ
会議室デビュー日: 2006/11/29
投稿数: 6
投稿日時: 2006-11-29 14:16
テーブル名が大文字・小文字できちんと設定されていますか?

例 JavaTB→JAVATB×


Bob
会議室デビュー日: 2006/11/28
投稿数: 16
投稿日時: 2006-11-29 14:26
>テーブル名が大文字・小文字できちんと設定されていますか?
>例 JavaTB→JAVATB×

それに関しては細心の注意をはらっていますが、
大文字、小文字は特に区別しなくてもテーブル参照はできるようです。
どらねこ
会議室デビュー日: 2006/11/29
投稿数: 6
投稿日時: 2006-11-29 16:22
あまり自分はSQLServer詳しくないのですが、あと考えられるのは

>sql = "select count(*) cnt from hsi.keyxitem110";

上記のhsiにあたる(ユーザー名)が違っていたりすると、このエラーが出たりするようです。

スキルアップ/キャリアアップ(JOB@IT)