Vin
Legacy Member
Ik heb een probleem bij het invoeren van parameters in mijn SQL queries, gebruik makend van ODP.NET in C#
De volgende query werkt vlekkeloos:
Wanneer ik echter parameters wil gebruiken om gebruikersnaam en wachtwoord door te geven, loopt alles mis. Zie volgend codefragment.
Alles wat staat uitgecommentarieerd zijn zaken die getest zijn en niet werken.
Hetgeen niet uitgecommentarieerd staat is mijn laatste, tevergeefse poging.
De uppercase zaken die in de uitgecommentarieerde code staan zijn van een eerdere poging, waar de parameters in hoofdletters stonden geschreven.
Ook single quotes rond de '
arameters' in de sql query heb ik reeds (zonder resultaat) geprobeerd.
De WriteLine op het einde staat er bij als test, hierbij crasht heel de boel op een NullReferenceException. De query krijgt blijkbaar geen resultaat terug.
Iemand die ziet waar ik de mist in ga?
Alvast bedankt
De volgende query werkt vlekkeloos:
Code:
OracleCommand cmdGG = new OracleCommand("SELECT * FROM gebruikers WHERE gebruikersnaam = 'dummy06' AND paswoord = 'paswoord'", connectie);
Wanneer ik echter parameters wil gebruiken om gebruikersnaam en wachtwoord door te geven, loopt alles mis. Zie volgend codefragment.
Alles wat staat uitgecommentarieerd zijn zaken die getest zijn en niet werken.
Hetgeen niet uitgecommentarieerd staat is mijn laatste, tevergeefse poging.
Code:
OracleCommand cmdGetGebruiker = new OracleCommand("SELECT * FROM gebruikers WHERE gebruikersnaam = :gebruikersnaam AND paswoord = :wachtwoord", connectie);
cmdGetGebruiker.BindByName = true;
//cmdGetGebruiker.Parameters.Add("GEBRUIKERSNAAM", OracleDbType.Varchar2, System.Data.ParameterDirection.Input);
//cmdGetGebruiker.Parameters["GEBRUIKERSNAAM"].Value = gebruikersnaam;
//cmdGetGebruiker.Parameters.Add("WACHTWOORD", OracleDbType.Varchar2, System.Data.ParameterDirection.Input);
//cmdGetGebruiker.Parameters["WACHTWOORD"].Value = wachtwoord;
//OracleParameter paramGebruikersnaam = cmdGetGebruiker.CreateParameter();
//paramGebruikersnaam.ParameterName = "GEBRUIKERSNAAM";
//paramGebruikersnaam.Value = gebruikersnaam;
//paramGebruikersnaam.OracleDbType = OracleDbType.Varchar2;
//paramGebruikersnaam.Direction = System.Data.ParameterDirection.Input;
//OracleParameter paramWachtwoord = cmdGetGebruiker.CreateParameter();
//paramWachtwoord.ParameterName = "WACHTWOORD";
//paramWachtwoord.Value = wachtwoord;
//paramWachtwoord.OracleDbType = OracleDbType.Varchar2;
//paramWachtwoord.Direction = System.Data.ParameterDirection.Input;
//cmdGetGebruiker.Parameters.Add(paramWachtwoord);
//cmdGetGebruiker.Parameters.Add("GEBRUIKERSNAAM", gebruikersnaam);
//cmdGetGebruiker.Parameters.Add(paramGebruikersnaam);
//cmdGetGebruiker.Parameters.Add("WACHTWOORD", wachtwoord);
OracleParameter paramGebruikersnaam = new OracleParameter("gebruikersnaam", OracleDbType.Varchar2);
paramGebruikersnaam.Direction = System.Data.ParameterDirection.Input;
paramGebruikersnaam.Value = gebruikersnaam;
cmdGetGebruiker.Parameters.Add(paramGebruikersnaam);
OracleParameter paramWachtwoord = new OracleParameter("wachtwoord", OracleDbType.Varchar2);
paramWachtwoord.Direction = System.Data.ParameterDirection.Input;
paramWachtwoord.Value = wachtwoord;
cmdGetGebruiker.Parameters.Add(paramWachtwoord);
OracleDataReader rdrGebruiker = cmdGetGebruiker.ExecuteReader();
Gebruiker gebruiker = null;
string type = "";
bool gevonden = false;
while(rdrGebruiker.Read())
{
gebruiker = new Gebruiker(rdrGebruiker.GetString(0), rdrGebruiker.GetString(1));
type = rdrGebruiker.GetString(2);
}
Console.WriteLine(gebruiker.ToString());
De uppercase zaken die in de uitgecommentarieerde code staan zijn van een eerdere poging, waar de parameters in hoofdletters stonden geschreven.
Ook single quotes rond de '
arameters' in de sql query heb ik reeds (zonder resultaat) geprobeerd.De WriteLine op het einde staat er bij als test, hierbij crasht heel de boel op een NullReferenceException. De query krijgt blijkbaar geen resultaat terug.
Iemand die ziet waar ik de mist in ga?
Alvast bedankt