- - PR -
PostgreSQLにODBCにて接続、SELECTが失敗します
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-24 08:31
VisualStudio .NET 2003 Professional
C#.NET Windowsフォーム WindowsXP Professional PostgreSQL 8.0.4 SELECT * FROM test_table WHERE serial = '234'; として該当する行数を得たいのですが、結果が"-1"になってしまいます。 "-1"ということは、該当するデータが見つからないのでしょうか。 test_tableにはserialというカラムに234が正しく登録されています。 WHERE句を無くして、全件をSELECTしても結果は同じく"-1"です。 また、pgAdminVというクライアントを利用し、 上記SELECT文を発行すると、正しく1行がSELECTされます。 なぜ"-1"が返ってくるのでしょうか、よろしくお願いいたします。 private void button1_Click(object sender, System.EventArgs e){ try{ odbcConnection1.Open(); int result = odbcCommand1.ExecuteNonQuery(); MessageBox.Show(result.ToString()); odbcConnection1.Close(); } catch(System.Data.Odbc.OdbcException error){ MessageBox.Show(error.Message); odbcConnection1.Close(); } } | ||||
|
投稿日時: 2005-10-24 08:45
ExecuteNonQuery メソッドで SELECT 文を実行する場合は必ず -1 が返ります。
これは仕様です。
# ですので、正しく行数が返る方が不思議だったりします。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-10-24 08:49
じゃんぬねっとサンへ
早速のレスありがとうございます! じゃんぬねっとサンの言うような仕様は、 どこで知ること出来るのでしょうか。 仕様と聞いて安心しました^^ SELECTで該当の行数を得るにはどうしたら良いのでしょうか。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-10-24 09:07
OdbcDataReader reader = odbcCommand1.ExecuteReader();
bool result = reader.HasRows; MessageBox.Show(result.ToString()); こうしたら出来ました! これで合ってるのでしょうか^^; 今回の事例の場合、存在するか、存在しないかがポイントなので、 上記のコードでよろしいのですが、 正確にSELECTされた行数を知るためにはどうするのでしょうか。 | ||||
|
投稿日時: 2005-10-24 09:08
それで OK です。
# 私の言う仕様とは、先のレスでリンクが貼ってある場所のことです。(^^;) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1