none
OleDbParameter RRS feed

  • Soru

  • Herkese merhaba;

     OleDbParameter[] prm = new OleDbParameter[254];
     prm[0] = new OleDbParameter("KAYITNO", pBultenNo);

    OleDB.executeNonQuery(sql, prm); 

    ********************************************************

           public static bool executeNonQuery(string sql, OleDbParameter[] param = null, int pCommandTimeout = 0)
            {
                try
                {
                    OleDbCommand cmd = new OleDbCommand(sql, dbCon);
                    if (pCommandTimeout != 0) cmd.CommandTimeout = pCommandTimeout;
                    if (param != null) cmd.Parameters.AddRange(param);

                    cmd.ExecuteNonQuery();
                    cmd.Dispose();

                    return true;
                }
                catch (Exception ex)
                {
                    tool.WriteError(ex, "executeNonQuery", "", sql);
                    dbCon.Close();
                    return false;
                }
            }

    Yukarıda 

    {"OleDbParameterCollection, yalnızca null olmayan OleDbParameter türündeki nesneleri kabul eder.\r\nParametre adı: value"} hatası alıyorum.  Parametrelerim çok daha fazla. Örnek olması acısından yukarıdaki kod parçasını yazdım. Boş parametreleri elle tek tek nulla eşitlemeden bu problemi nasıl çözebilirim?


    ***************************************


    • Düzenleyen hilal__ 9 Temmuz 2015 Perşembe 11:32
    9 Temmuz 2015 Perşembe 11:03

Yanıtlar

  • Çünkü array kullanıyorsunuz. Yukarıdaki dizinizde bir tane OleDbParameter, 253 tane null var.

    Method signature'unuzu;

    public static bool executeNonQuery(string sql, List<OleDbParameter> param = null, int pCommandTimeout = 0)

    bu şekle çevirin. Parametre listesi hazırlarken;

    var prm = new List<OleDbParameter>();
    prm.Add(new OleDbParameter("KAYITNO", pBultenNo));
    prm.Add(new OleDbParameter("Bıdı", "Bıdı"));
    .
    .
    .
    
    şeklinde kullanın


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak İşaretleyen Serkan Canseven 16 Temmuz 2015 Perşembe 06:44
    9 Temmuz 2015 Perşembe 11:45
    Moderatör

Tüm Yanıtlar

  • Dizi yerine listeleri kullanabilirsin. 

    OleDbParameter[] dizi = new OleDbParameter[254]

    yerine

    List<OleDbParameter> dizi = new List<OleDbParameter>();
    kullanabilirsiniz.


    9 Temmuz 2015 Perşembe 11:43
  • Çünkü array kullanıyorsunuz. Yukarıdaki dizinizde bir tane OleDbParameter, 253 tane null var.

    Method signature'unuzu;

    public static bool executeNonQuery(string sql, List<OleDbParameter> param = null, int pCommandTimeout = 0)

    bu şekle çevirin. Parametre listesi hazırlarken;

    var prm = new List<OleDbParameter>();
    prm.Add(new OleDbParameter("KAYITNO", pBultenNo));
    prm.Add(new OleDbParameter("Bıdı", "Bıdı"));
    .
    .
    .
    
    şeklinde kullanın


    www.mvcblog.org
    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    • Yanıt Olarak İşaretleyen Serkan Canseven 16 Temmuz 2015 Perşembe 06:44
    9 Temmuz 2015 Perşembe 11:45
    Moderatör