Avatar billede deepcore Nybegynder
17. marts 2005 - 15:58 Der er 3 kommentarer og
1 løsning

lave insert med select til mysql fra c#

Normalt ville man lave et insert i en base således:

        MySqlConnection con = new MySqlConnection("Database=Test;Data Source=localhost;User Id=;Password=");
        con.Open();
        MySqlCommand cre = new MySqlCommand("CREATE TABLE pics (id INTEGER PRIMARY KEY, pic MEDIUMBLOB)", con);
        cre.ExecuteNonQuery();
        MySqlCommand ins = new MySqlCommand("INSERT INTO pics VALUES (@id, @pic)", con);
        ins.Parameters.Add("@id", MySqlDbType.Int);
        ins.Parameters.Add("@pic", MySqlDbType.MediumBlob);
        for(int i = 0; i < npics; i++)
        {
            ins.Parameters["@id"].Value = i;
            byte[] data = new Byte[picsize];
            for(int j = 0; j < picsize; j++)
            {
                data[j] = (byte)((i + j) % 256);
            }
            ins.Parameters["@pic"].Value = data;
            ins.ExecuteNonQuery();
        }
        con.Close();
---------
problemet liggger nu i, at jeg i det projekt jeg arbejder med, har det databaserækkerne repræsenteret som objekter i hukommelsen. de ligger her sorteret i en liste på objekternes id (som svarer til primærnøglen i basen) ... Når objekterne bliver kastet ned i basen får de automatisk tildelt en primærnøgle hvis de ikke har nogen med, da kolonnen er sat til AUTO_INCREMENT NOT NULL. ...

problemet ligger i at jeg har brug for nøglen til at sortere mine objekter efter. kan det klares med et database kald at indsætte og få nøglen tilbage?
Avatar billede arne_v Ekspert
17. marts 2005 - 16:01 #1
SELECT LAST_INSERT_ID()

vil give dig den sidste auto increment key på connection
Avatar billede deepcore Nybegynder
17. marts 2005 - 16:14 #2
minstanten om du ikke har hjulpet mig for 3 gang inden for kun et par dage....

glæder mig til jeg har fået styr på denne her db.... det er ved at blive lidt trættende det her ;)

... jeg opbevarer mine nøgler zerofilled integers... når man foretager et normalt select kommer det zerofillled ud, men metoden du gav giver kun selve nummeret tilbage, men glemmer nullerne ... ved du om det kan klares?
Avatar billede arne_v Ekspert
17. marts 2005 - 16:17 #3
Det tvivler jeg på.

Men det må være til at håndtere i koden.
Avatar billede arne_v Ekspert
17. marts 2005 - 16:17 #4
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
Computerworld tilbyder specialiserede kurser i database-management

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