• 締切済み

SQL文のエラー

PostgreSQLの初心者です。よろしくお願いします。 今、日本語ODBCドライバを使ってクライアント側を VB.NETでプログラムを作っています。PostgreSQLは8.1.4です。 レコードの追加をするために、レコードIDのMAX値を 撮るためにプログラム中にSQL sql = "SELECT MAX(user_id) AS MaxID FROM user" を入れて発行したところ、本来ですと「1」が返って こなければいけないのに、 Msgbox(MaxID) を仕込むと「0」が返ってきます。そして、その後に ERROR [HY000] Error while executing the query; ERROR; operator does not exist: # integer というエラーが返ってきます。 先ほどのSQLはリモートで直接PostgreSQLにつなぐと ちゃんと「1」が返ってくるのですが、VB.NET上では うまくいきません。 質問としては2つあります。 1)VB.NET上で実行すると、なぜ「0」が返ってきて しまうのか? 2)エラーメッセージの意味 の2点です。 よろしくお願いします。

みんなの回答

  • ssm3u
  • ベストアンサー率52% (19/36)
回答No.4

テーブル構造および型は問題なくて、 psqlコマンドで実行してちゃんと1が返ってくるようであれば、 次はVB.NETプログラミングの問題かと思ってしまいます。 SQL周りだけでも良いので掲載して頂きたいと思います。

  • salf
  • ベストアンサー率42% (27/64)
回答No.3

じゃあ、ほかのSQL文を実行できますか? 「Error while executing the query」 って実行エラーって意味だと思うんで、もしかしたらSQLが実行できてないかもしれません。

  • ssm3u
  • ベストアンサー率52% (19/36)
回答No.2

列:user_id の型を確認してみてください。

hanadate
質問者

補足

ssm3uさん、回答ありがとうございます。 psqlで # d\ user と入れると、 Column | Type | Modifiers ---------------+-------------------+----------- user_id | integer | not null と返ってきますので、間違いなくintegerで定義して います。 勿論、VB.NET側はMaxIDをintegerで取り扱っています。 他にお気づきの点はないでしょうか?

  • salf
  • ベストアンサー率42% (27/64)
回答No.1

型が違いませんか? Int型をString型として使ってる気がします。

hanadate
質問者

お礼

salfさん、回答ありがとうございます。 psqlで # d\ user と入れると、 Column | Type | Modifiers ---------------+-------------------+----------- user_id | integer | not null と返ってきますので、間違いなくintegerで定義して います。 勿論、VB.NET側はMaxIDをintegerで取り扱っています。 他にお気づきの点はないでしょうか?