Avatar billede jkampmann Nybegynder
01. april 2008 - 20:08 Der er 12 kommentarer og
1 løsning

Column 'brugernavn' cannot be null

Ledigt.CommandText = "SELECT id FROM brugere WHERE brugernavn = @brugernavn";

Ledigt.Parameters.Add("@brugernavn", OdbcType.VarChar, 32).Value = Brugernavn.Text;

Hvorfor melder den fejl, når i brugernavn-feltet skriver "yez" f.eks.?

Exception Details: System.Data.Odbc.OdbcException: ERROR [HYT00] [MySQL][ODBC 3.51 Driver][mysqld-5.0.45]Column 'brugernavn' cannot be null
Avatar billede arne_v Ekspert
01. april 2008 - 21:22 #1
proev med:

Ledigt.CommandText = "SELECT id FROM brugere WHERE brugernavn = ?";
Avatar billede jkampmann Nybegynder
01. april 2008 - 21:24 #2
Ledigt.CommandText = "SELECT id FROM brugere WHERE brugernavn = ?";
Ledigt.Parameters.AddWithValue("@brugernavn", Brugernavn.Text);

Samme fejl!!
Avatar billede tomledk Nybegynder
01. april 2008 - 22:40 #3
Er du sikker på at det er i den command at din fejl opstår?
Avatar billede jkampmann Nybegynder
01. april 2008 - 22:53 #4
Jeps. 100%


OdbcCommand Ledigt = new OdbcCommand();

Ledigt.CommandText = "SELECT id FROM brugere WHERE brugernavn = @brugernavn";
Ledigt.Parameters.AddWithValue("@brugernavn", Brugernavn.Text);

Ledigt.Connection = MySQLConnector.con;

...............


OdbcCommand Command = new OdbcCommand();

            Command.CommandText = "INSERT INTO brugere (brugernavn,kodeord,email,fornavn,efternavn,dag,mdr,aar,region) VALUES (@navn,@kode,@email,@fornavn,@efternavn,'" + Dag.SelectedValue + "','" + Mdr.SelectedValue + "','" + Aar.SelectedValue + "','" + Region.SelectedValue + "')";

            /** Ingen SQL-Injections **/

            Command.Parameters.Add("@navn", OdbcType.VarChar, 32).Value = Brugernavn.Text;
            Command.Parameters.Add("@kode", OdbcType.VarChar, 32).Value = Kode1.Text;
            Command.Parameters.Add("@email",OdbcType.VarChar, 100).Value = Email.Text;
            Command.Parameters.Add("@fornavn", OdbcType.VarChar, 50).Value = Fornavn.Text;
            Command.Parameters.Add("@efternavn", OdbcType.VarChar, 50).Value = Efternavn.Text;
 

            Command.Connection = MySQLConnector.con;

            OdbcDataReader reader = Command.ExecuteReader();
Avatar billede arne_v Ekspert
01. april 2008 - 22:54 #5
Det lyder da snarere som om det er den sidste INSERT hvor du ogsaa skal bruge ? i
selve SQL strengen.
Avatar billede jkampmann Nybegynder
01. april 2008 - 23:01 #6
Skal det så være

VALUES (?,?,?,?,?,'"......


også ?navn, ?kode, ?email i stedet?
Avatar billede erikjacobsen Ekspert
01. april 2008 - 23:02 #7
Du skulle kunne bruge blot "?" begge steder, blot du tilføjer parameters i samme rækkefølge som dine "?"-ere står i SQL-særningen.
Avatar billede erikjacobsen Ekspert
01. april 2008 - 23:03 #8
Og det er vist en ting med ODBC, at det skal være sådan (ja, det kan måske gøres anderledes, hvad ved bønder om agurkesalat?)
Avatar billede jkampmann Nybegynder
01. april 2008 - 23:08 #9
Det virker nu, forstår ikke helt hvorfor man så kalder dem navne?

F.eks

Noget.Parameters.AddWithValue("?navn", Brugernavn.Text);
Hvis den alligevel hedder "?" - hvorfor skal den så hedde ?navn, eller andet? Altså hvorfor skal man bruge et navn på parameteren når den alligevel ved det, ved brug af ?,?,?,?

Smid svar
Avatar billede erikjacobsen Ekspert
01. april 2008 - 23:14 #10
Fordi for ODBC er det rækkefølgen. Dit oprindelige ville virke med SqlClient til MSSQL-server. Og så ku' du li'så godt

  Command.Parameters.Add("?", OdbcType.VarChar, 32).Value = Brugernavn.Text;

Ingen point til mig, tak.
Avatar billede jkampmann Nybegynder
01. april 2008 - 23:16 #11
Ahh okay.. Mystisk nok alliwl'... Svar arne.. Og tak for hjælpen erik
Avatar billede arne_v Ekspert
01. april 2008 - 23:52 #12
ODBC og OLEDB er meget specielle derved at de matcher første parameter med første ?, anden
parameter med andet ? o.s.v..

Alle andre providere (som jeg kender) bruger navnene.

SqlServer bruger @xxx, MySQL (altså den rigtige provider) bruger ?xxx, Oracle bruger :xxx o.s.v..
Avatar billede arne_v Ekspert
01. april 2008 - 23:52 #13
Og et svar.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester