1

「'@Cmp_DocPath' 付近の構文が正しくありません。コメント行コードを使用すると、エラーが表示されます。「パラメーター名 '@Cmp_DocPath' を持つ sqlparameter は、この sqlparametercollection に含まれていません」というエラーが表示されます。AsyncFileUpload AJAX コントロールのファイル名を取得する方法?

    protected void BtnCmpApproval_Click(object sender, EventArgs e)
    {
      SqlConnection SqlCon = new SqlConnection(GetConnectionString());
        string query = "INSERT INTO User_Info2 VALUES     (@lblCmpUserName,@txtCmpName,
      @txtRegCountry,@txtCmpRegNo,@txtCmpEstdate,@txtCmpAddress,@ddlAddrIn)";
        try
        {
            SqlCon.Open();
            SqlCommand cmd = new SqlCommand(query, SqlCon);
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@UserName", lblCmpUserName.Text);
            cmd.Parameters.AddWithValue("@Cmp_Name", txtCmpName.Text);
            cmd.Parameters.AddWithValue("@Commercial_RegNo", txtRegCountry.Text);
            cmd.Parameters.AddWithValue("@Comm_Country", txtCmpRegNo.Text);
            cmd.Parameters.AddWithValue("@Cmp_EstablishDate", txtCmpEstdate.Text);
            //cmd.Parameters.AddWithValue("@Cmp_DocPath", AFU1.FileName);
            cmd.Parameters["@Cmp_DocPath"].Value=AFU1.FileName;
            cmd.Parameters.AddWithValue("@txtCmpAddress", txtCmpAddress.Text);
            cmd.Parameters.AddWithValue("@ddlAddrIn", ddlAddrIn.SelectedItem.Text);
            cmd.ExecuteNonQuery();
        }
        catch (Exception ex)
        {
           throw new Exception(ex.Message);
        }
        finally
        { 
           SqlCon.Close();
        }
    }    
4

3 に答える 3

1

これらのパラメーターを SQL 挿入文字列に設定しました (7 つのパラメーター)

@lblCmpUserName,
@txtCmpName,       
@txtRegCountry,
@txtCmpRegNo,
@txtCmpEstdate,
@txtCmpAddress,
@ddlAddrIn

これらのパラメーターを SqlCommand に追加しました (8 つのパラメーター)

@UserName   -> Missing
@Cmp_Name   -> Missing
@Commercial_RegNo ->Missing
@Comm_Country  -> Missing
@Cmp_EstablishDate ->Missing
@Cmp_DocPath  ->Missing
@txtCmpAddress  ->Found it  !!
@ddlAddrIn  ->Found it!!!!

ご覧のとおり、複数のミスがあります。パラメータ名のコントロール名を混同していると思います。挿入文字列に存在する名前を、パラメーター コレクションに追加された同じ名前に変更する必要があります。

string query = "INSERT INTO User_Info2 VALUES (@UserName,@Cmp_pName, " + 
               "@Comm_Country, @Commercial_RegNo,@Cmp_EstablishDate," + 
               "@txtCmpAddress,@ddlAddrIn); 

また、パラメーターCmp_DocPath"を追加しますが、挿入文字列のどこにも見つかりません。

于 2012-06-14T08:56:34.547 に答える
0

名前のパラメータを追加しているのではなく@Cmp_DocPath、コードは単にそれがすでに存在すると想定しており、そうではないことを伝えています。他のパラメーターを追加するのと同じ方法でパラメーターを追加する必要があります。

cmd.Parameters.AddWithValue("@Cmp_DocPath", AFU1.FileName);
于 2012-06-14T08:54:42.427 に答える
0

クエリ パラメータ名と、パラメータ値を追加するときに指定するパラメータ名が一致している必要があります。クエリで指定したものと同じすべてのパラメーターの名前、タイプ、およびパラメーターの数を確認します。

サンプルコード:

try
{
    string query = "INSERT INTO User_Info2 VALUES (@UserName,@Cmp_Name,@Commercial_RegNo,@Comm_Country,@Cmp_EstablishDate,@Cmp_DocPath, @txtCmpAddress,@ddlAddrIn)";
    using (SqlConnection SqlCon = new SqlConnection(GetConnectionString()))
    {
        SqlCon.Open();
        using (SqlCommand cmd = new SqlCommand(query, SqlCon))
        {
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@UserName", lblCmpUserName.Text);
            cmd.Parameters.AddWithValue("@Cmp_Name", txtCmpName.Text);
            cmd.Parameters.AddWithValue("@Commercial_RegNo", txtRegCountry.Text);
            cmd.Parameters.AddWithValue("@Comm_Country", txtCmpRegNo.Text);
            cmd.Parameters.AddWithValue("@Cmp_EstablishDate", txtCmpEstdate.Text);
            cmd.Parameters.AddWithValue("@Cmp_DocPath", AFU1.FileName);
            cmd.Parameters.AddWithValue("@txtCmpAddress", txtCmpAddress.Text);
            cmd.Parameters.AddWithValue("@ddlAddrIn", ddlAddrIn.SelectedItem.Text);
            cmd.ExecuteNonQuery();
        }

    }

}
catch (Exception ex)
{
    throw new Exception(ex.Message);
}
于 2012-06-14T08:55:09.103 に答える