2016-07-22 3 views
0

私はasp Login.aspxからパラメータを取得するログインの手順を書いています。私はまた、パラメータを送信し結果を得るための機能を持っています。私はパラメータを送ることができると思うが、データテーブルの充填、エラーのスロー。私はC#側で何かを試しましたが、私はそれを理解できませんでした。 PS:私は私の手続きを実行するか分からない。しかし、手続きは正しいようです。Asp.Net DataTable /// OR \私のプロシージャ(oracle)doesntの作業を埋めることはできません

public bool RunLoginProcedure(string E_mail, string PassWord) 
    { 
     OracleConnection connect = myconnection(); 
     OracleCommand command = new OracleCommand(); 
     OracleDataAdapter adapter; 
     DataTable table = new DataTable(); 

     command.Connection = connect; 

     //OracleParameter[] parameters = new OracleParameter[] 
     //{ 
     // new OracleParameter("@EMail",E_mail), 
     // new OracleParameter("@UserPassword",PassWord) 
     //}; 

     //command.Parameters.Add(parameters); 
     command.Parameters.Add(new OracleParameter("EMail", OracleDbType.NVarchar2)); 
     command.Parameters.Add(new OracleParameter("UserPassword", OracleDbType.NVarchar2)); 
     command.Parameters["EMail"].Value = E_mail; 
     command.Parameters["EMail"].Direction = ParameterDirection.Input; 
     command.Parameters["UserPassword"].Value = PassWord; 
     command.Parameters["UserPassword"].Direction = ParameterDirection.Input; 
     command.CommandText = "Procedure_Login"; 
     command.CommandType = CommandType.StoredProcedure; 

     //command.ExecuteNonQuery(); //here 
     command.ExecuteNonQueryAsync(); 
     adapter = new OracleDataAdapter(command); 
     adapter.Fill(table); 

     bool value; 

     if (table.Rows.Count != 0) 
     { 
      value = true; 
     } 

     else value = false; 


     connect.Close(); 
     connect.Dispose(); 


     return value; 
    } 

とここに私の手順

create or replace procedure Procedure_Login 
(
EMail IN USERS.E_MAIL%TYPE, 
UserPassword IN USERS.USERPASSWORD%TYPE, 
id OUT VARCHAR2, 
firstname OUT VARCHAR2, 
lastname OUT VARCHAR2 
) is 
begin 

SELECT USER_ID,FIRSTNAME,LASTNAME 
INTO id,firstname,lastname 
FROM USERS 
WHERE E_MAIL=EMail AND USERPASSWORD=UserPassword; 

end Procedure_Login; 

And here is the error: enter image description here Edit:view error more specific enter image description here

+0

詳しい情報が表示されます。 –

+0

私はあなたがoracleクライアントの問題を持っていると思うので、詳細はこのURLを参照してください。https://community.oracle.com/message/10610812#10610812 oracle client。 –

+0

エラーをプレーンテキストで表示してください。 –

答えて

0

を持っているだけで、あなたは、5つのパラメータ(2出力:入力、3)に期待するストアドプロシージャを呼び出しているあなたがで追加する必要があります。..

create or replace procedure Procedure_Login 
(
     EMail IN USERS.E_MAIL%TYPE, 
     UserPassword IN USERS.USERPASSWORD%TYPE, 
     id OUT VARCHAR2,  <--- miss in your calling code! 
     firstname OUT VARCHAR2, <--- miss in your calling code! 
     lastname OUT VARCHAR2 <--- miss in your calling code! 
) is 
begin 
...  
end Procedure_Login; 

をしていますが、唯一の2つの入力パラメータを渡しますcommand.ExecuteNonQueryまたは.ExecuteNonQueryAsync()これらの行の前にあなたのコード...あなたがエラーで「詳細を見る」のリンク(nullでない場合も、内部例外を参照)場合

command.Parameters.Add(new OracleParameter("Id", OracleDbType.NVarchar2)); 
command.Parameters.Add(new OracleParameter("firstname", OracleDbType.NVarchar2)); 
command.Parameters.Add(new OracleParameter("lastname", OracleDbType.NVarchar2)); 

command.Parameters["Id"].Direction = ParameterDirection.Output; 
command.Parameters["firstname"].Direction = ParameterDirection.Output; 
command.Parameters["lastname"].Direction = ParameterDirection.Output; 
+0

@FurkanAyıkこんにちは、フィードバックをお願いしますか? –

+0

その遅い答えには申し訳なく思っています。私はこのモジュールのための慣行を使いませんでしたが、私は正しいと思います。それは私の将来についてのことでした。私は間違ったSQLコマンドを書いたとき、私は同じエラーが発生したので。私は今、仕事がありますが、私はあなたの解決策を試してみます。そして、私はかなりそれが動作することを確信しています。助けてくれてありがとうMr. Corvino –

+0

ありがとうMr Ayik。 OPで報告される問題は、ストアドプロシージャを呼び出すときに渡されるパラメータの数が間違っていることによって決まることを私は保証します。最高のCiro Corvino –

0

あり、ここで何の解決策はありませんので、私は何をやったかお伝えしたいと思います。私は自分の手続きを実行できませんでした(私はそれが私がoracle-plqlに似ていないと思う)。だから私は手続きを使うことをあきらめた。私はOracleCommandをC#の内部で使用し、それをコマンドで同じ仕事にしました。 (これは簡単だったし、私はそれを知っていた、私はちょうどCでプロシージャを実行することを学びたかった#)これは今働いている。私はまだCでプロシージャを実行する方法を知らない#と私はすぐにまたはそれを学ぶ必要があると思う。だから誰かがこの問題を解決できるなら、それは素晴らしいだろう。素敵な一日に

関連する問題