SQL データベースから特定の情報を取得して C# コードでアクセス許可チェックを行うのに苦労した後、基本に戻って適切に行う方法を学び、ゆっくりと自分のスキルを積み上げて、最終的に必要なことを実行できるようにすることにしました。する。以下のコードの目的は、現在の Active Directory ユーザーを取得し、ユーザー名やその他の情報を含む SQL テーブルに移動し、一致するものを見つけてメッセージ ボックスに表示することです。
string currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
using (var cn = new SqlConnection(ConfigurationManager.ConnectionStrings["HSEProjRegConnectionString1"].ConnectionString))
using (var cmd = new SqlCommand())
{
cn.Open();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT username FROM [tbl_Person] WHERE [username] LIKE '@currentUser'";
SqlParameter param = new SqlParameter();
cmd.Parameters.Add("@currentUser", SqlDbType.Char).Value = currentUser;
MessageBox.Show("{0}", Convert.ToString((int)cmd.ExecuteScalar()));
cn.Close();
}
しかし、何かが間違っています。次のエラーとスタック トレースが表示されます。38 行目は MessageBox 行です。
System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
[NullReferenceException: Object reference not set to an instance of an object.]
HSE_project_Register.admin.Page_Load(Object sender, EventArgs e) in S:\IT\Development\Visual Studio Projects\HSE Project Register\admin\admin.aspx.cs:38
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.UI.Control.LoadRecursive() +71
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3064
そのコードで Null 参照例外の原因は何ですか? 答えがスタックトレースにある場合、誰かが私にそれを説明してもらえますか? スタック トレースは非常に紛らわしいと思います。