0

その場で SqlDataSource のパラメーターを変更しようとしていますが、コードが失敗したようです。つまり、失敗したようです。

コードは次のとおりです。

        int id = 0;

        SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["RHOGEConnection"].ConnectionString);
        SqlCommand getId = new SqlCommand(null, conn);
        SqlParameter name = new SqlParameter("@name", SqlDbType.NVarChar);
        name.Value = SelectTeam.SelectedValue;
        getId.Parameters.Add(name);
        /* getId.CommandText = */ //changed to a select statement that gets a number

        try
        {
            conn.Open();
            id = (int)getId.ExecuteScalar();
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

        SqlDataSource2.SelectParameters.Add(new Parameter("getId", TypeCode.Int16, Convert.ToString(id)));

これで、番号を取得するコード (SqlDataSource2 の上の行) が機能することがわかりました。画面に出力したところ、正しく表示されたからです。また、SQL Management Studio で SqlDataSource2 select コマンドを試してみましたが、正しい結果が得られました。したがって、パラメーター リストにパラメーターを追加する際に問題があると考えられます。

SELECT [TeamName] FROM [Teams] where PlayerIdent = (select playerId
                from Players where PlayerShirtId = @getId)

上記は動作する選択コマンドです。

パラメータの問題が正しい診断であることに同意しますか?もしそうなら、私は何をすべきですか?

編集:次の方法でこの問題を解決できました。

SqlDataSource2.SelectParameters["getId"].DefaultValue = Convert.ToString(id);
4

1 に答える 1

0

おそらく代わりに

SqlParameter name = new SqlParameter("@name", SqlDbType.NVarChar);

そのはず

Parameter name = new Parameter("@name", SqlDbType.NVarChar, Convert.ToString(id));
于 2013-03-06T14:38:03.990 に答える