-1

二重引用符は機能しないため、SQLステートメントを直接実行するときに実際に変数比較を行うには、「値」と入力する必要があります。

問題は、ASP.NETコードからSQLステートメントを実行すると、読み取り値が得られないように見えることです...エラーも発生しません:S...。

SQLステートメントを単独で実行しようとしましたが、機能します。

public static string testExi(string localIncidentNum)
        {

            try
            {
                string query = "SELECT TOP 1 UniqueColID From DBNAME WHERE LocalIncidentNum = @localIncidentNum ORDER BY [version] DESC";

                DataTable dt = new DataTable();
                SqlConnection connection = new SqlConnection(connectionStr);

                SqlCommand command = new SqlCommand(query, connection);
                command.Parameters.AddWithValue("@localIncidentNum", localIncidentNum);

                connection.Open();
                SqlDataAdapter adp = new SqlDataAdapter(command);
                adp.Fill(dt);
                connection.Close();
                command.Dispose();
                connection.Dispose();

                if (dt.Rows.Count != 0)
                {
                    string UniqueColID = dt.Rows[0]["UniqueColID"].ToString();
                    return UniqueColID;
                }
                else
                {
                    return null;
                }


                string some = dt.Rows[0]["UniqueColID"].ToString();
                return some;
            }


            catch (Exception err)
            {
                Global.tmpmsg = " Updating follow up was not successful. " + err.ToString();
                return null;
            }


        }

SELECTステートメントでインシデント値をハードコーディングすると機能しますが、.addwithvalueでインシデント値をハードコードすると機能しません。

    command.Parameters.AddWithValue("@localIncidentNum", "12-023696");
4

3 に答える 3

5

SQLステートメントを再確認してください。

SELECT TOP 1 UniqueColID From WHERE LocalIncidentNum = @localIncidentNum ORDER BY [version] DESC

From Where

編集 変更を遵守して、問題を説明するときは常にできるだけ正確にするのが最善です。SQLステートメントのテーブル名のようなものを省略すると、非常に誤解を招く恐れがあります。

于 2012-06-15T19:19:25.577 に答える
0

おそらく、コマンド パラメータにデータ型を追加します。コマンドでタイムアウトしている可能性があるため、何も得られていないと思います。

command.Parameters.AddWithValue("@localIncidentNum", localIncidentNum);
command.Parameters[0].SqlDbType = SqlDbType.VarChar;

Varchar も使用して、ここで同様の問題を見つけました。

DBType のない AddWithValue により、クエリの実行が遅くなる

于 2012-06-15T19:51:14.450 に答える