Visual Studio 2010 を使用して、データベースを使用して ac# Web アプリケーションを作成しています。私の目標は、テーブルからエントリを選択して返すストアド プロシージャを実行する ac# クラスを default.aspx で呼び出すことです。コードは次のとおりです。
'The stored procedure. I want it to send back the name it gets from doing
'the query to the c# class.
ALTER PROCEDURE getName (@id int)
AS
BEGIN
SET NOCOUNT ON;
--
SELECT name FROM tableA where id = @id;
END
Return
//Here's the c# class I'm using.
public class student
{
public string name;
public int id;
public student()
{ }
public String doQuery(int id)
{
SqlConnection conn = null;
try
{
conn = new SqlConnection("Server =(local); Database = Database1.mdf;
Integrated Security = SSPI");
conn.Open();
SqlCommand cmd = new SqlCommand("getName", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter("@id", SqlDbType.Int);
param.Direction = ParameterDirection.Input;
param.Value = id;
cmd.Parameters.Add(param);
//This is some code from when I tryed return value
//SqlParameter reVal = cmd.Parameters.Add("@name", SqlDbType.VarChar);
//reVal.Direction = ParameterDirection.ReturnValue;
//before using ExecuteScalar I tried ExcuteNonQuery with the commented
//out code
name = (string)cmd.ExecuteScalar();
//name = (String)cmd.Parameters["@name"].Value;
conn.Close();
}
catch(Exception)
{}
return name;
}
}
プログラムを実行してもエラーは返されず、単に名前に値が設定されません。SQLプロシージャで選択された名前をc#クラスの名前変数に取得するために何が欠けていますか。私の問題を明確に伝えていることを願っています。
edit1:エラーが発生したことを確認するために何を使用するかを決定していなかったので、キャッチ原因に何も入れませんでした。試行に失敗したときに name = "error" にするように変更しました。それが私が得るものであり、それが私が得るものです。また、SQLサーバー管理で「exec getName 5、otherstuff」を実行してみました。exec getName を実行するときに 2 番目のパラメーターとして何を使用するかについては少しわかりません。コマンドが正常に実行されたと表示されますが、id 5 の名前は表示されません。