Som man kan se burde det her jo virke, men jeg får en "Object reference not set to an instance of an object" exception, ligeså snart jeg prøver at smide værdier ind i første array index.
Hashtable[] arguments = new Hashtable[5]; arguments[0].Add("@productGroupID", _productGroupID);<- "Object reference not set to an instance of an object" arguments[1].Add("@brandID", _brandID); arguments[2].Add("@countryID", _countryID); arguments[3].Add("@productName", _productName); arguments[4].Add("@commercialName", _commercialName);
Du opretter et nyt array af hashtables med din new, men de enkelte pladser er stadig null, indtil de bliver tildelt en reference til en HashTable. Så du kan: Hashtable[] arguments = new Hashtable[5]; for(int i = 0 ; i < 5 ;i++ ) arguments[i] = new Hashtable();
Nu har jeg endeligt fået min hashtable(_arguments) videre frem i systemet. Men hvordan gør jeg følgende (Kig i koden)
SqlParameter[] prms = new SqlParameter[_arguments.Count]; // Dynamisk for(int i=0;i<_arguments.Count;i++) { prms[i].ParameterName = _arguments.(Her vil jeg gerne smide navnet på min key i ParameterName, Hvordan???); prms[i].Value = _arguments.(Her vil jeg gerne smide værdien på min value i ParameterName, Hvordan???); }
Det er det sidste jeg mangler, kan nogen give et hint?
keys = _arguments.Keys; int i=0; foreach (object key in keys) { prms[i].ParameterName = key.ToString(); <- Jeg får en "Object reference not set to an instance of an object" i++; }
Jeg skal lave en database access klasse med to simple metoder.
Den ene metode er en ExecuteUpdate metode og den anden er en ExeceuteQuery. ExecuteUpdate er en void, der kun modtager stored proc og deres argumenter til INSERTS, UPDATE og DELETE.
ExeceuteQuery metoden modtager også navn på st. proc og argumenter som parameter, men returnerer et dataset.
Jeg gør brug af Microsoft Application Block, som jeg faktisk sætter mit eget lille personlige præg på, ved at sende navn på stored proc, samt det sæt af argumenter til stored proceduren. Navnet på st. proc er jo ikke svært at sende med, men at jeg kan bygge en hashtable af mine argumenter er det jeg forsøger.
Jeg forstår stadig ikke hvad du vil opnå med den kode du har der. Umiddelbart så sætter du bare et ParameterName på dine parameters. Hvad med value?
Og til det problem du får lige der, så er det nok fordi du ikke har en instans af den Parameter du prøver at sætte et navn på.
Prøv:
foreach (object key in keys) { prms[i] = new SqlParameter (); prms[i].ParameterName = key.ToString(); <- Jeg får en "Object reference not set to an instance of an object" i++; }
Nu ved jeg ikke om det er SqlParameters du bruger, men ellers skifter du det bare ud.
Alle mine variabler med _ prefix indholder værdier.
Hashtable[] arguments = new Hashtable[5]; arguments[0].Add("@productGroupID", _productGroupID);<- "Object reference not set to an instance of an object" arguments[1].Add("@brandID", _brandID); arguments[2].Add("@countryID", _countryID); arguments[3].Add("@productName", _productName); arguments[4].Add("@commercialName", _commercialName);
I mit sidste eksempel sættes value i constructoren på SqlParameter. Og det er ikke til at sige om fejlen kommer i den kode du har vist eller om den kommer i din SqlHelper.
prms[i] = new SqlParameter(key.ToString(), _arguments[key].ToString());
Burde give det samme :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.