私はC#とNpgsqlで初心者ですが、特定のテーブルで検索しようとしていますが、例外が発生しています。C#メソッドで例外を返すSELECTクエリ
のSystem.InvalidOperationException:例外ベロー
public User Login(Account c) { User usr = new User(); using (NpgsqlConnection con = new NpgsqlConnection(strConnection)) { try { con.Open(); NpgsqlCommand command = new NpgsqlCommand(); command.Connection = con; command.CommandText = "SELECT name FROM public.user WHERE c_id IN (SELECT id FROM public.account WHERE [email protected] AND [email protected])"; command.Parameters.AddWithValue("Email", c.Email); command.Parameters.AddWithValue("Password", c.Password); NpgsqlDataReader dr = command.ExecuteReader(); if (dr.HasRows) { usr.Name = dr["name"].ToString(); } } catch (Exception ex) { throw ex; } } return usr; }
'NO行が利用できない'
私は同じことをしましたが、PgAdmin4を使用して、と私は1つのラインを持っています。まさに私が欲しいもの。
SELECT name FROM public.user WHERE c_id IN (SELECT id FROM public.account WHERE email='[email protected]' AND password='user05');
どうすればこの問題を解決できますか?
使用プロファイラC#プロジェクトから実行されている正確なクエリを調べます。 – EvZ
下のクエリでは、* name *の代わりに** nome **を選択していますが、それはタイプミスですか?また、*パスワード*対センナ**。 – Dan
@EvZデータベース関連の例外ではなく、.netの例外です。おそらく、フィールドにアクセスする前にdatareaderで '.Read()'を呼び出さないためでしょう。 styxsの答えを確認してください。 – bradbury9