Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Accessi SQLi probleemid + mp3 id3 tagis genre saamine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
neros
HV Guru
neros

liitunud: 26.11.2003




sõnum 01.03.2009 11:50:12 Accessi SQLi probleemid + mp3 id3 tagis genre saamine vasta tsitaadiga

Probleem järgmine.

On tarvis queryga saada unikaalsed kirjed. Kui MySQLis (ja ilmselt kõigis teistes sqlides) toimib selline käsk:

tsitaat:
SELECT Title, Artist FROM mp3db GROUP BY Artist


Siis loobitakse mulle midagi aggregate functioni kohta (aka error).

SELECT Title, Artist FROM mp3db WHERE Artist IN (SELECT DISTINCT Artist FROM mp3db)


Siin lihtsalt ignoreerib access täielikult seda subqueryt (distinct).
Et siis küsimus on selles, kuidas saada ühe välja unique väärtused koos teiste väljadega.

=====================

Teine probleem.


    public class MusicID3Tag
    {
        public byte[] TAGID = new byte[3];
        public byte[] Title = new byte[30];
        public byte[] Artist = new byte[30];
        public byte[] Album = new byte[30];
        public byte[] Year = new byte[4];
        public byte[] Comment = new byte[30];
        public byte[] Genre = new byte[1];
    }


See on mp3'e ID3 tag, vastavalt google antud lehekülgedele.


mi.Genre = Encoding.Default.GetString(tag.Genre);


See aga annab mulle mingi hoopistükkis imeliku väärtuse, umbes nagu mingi random ascii chari. Ristid, punktid, tärnid, kolmnurgad, suvalised tähestiku tähed...
Milles võib olla probleemi?

E: Ise küsin, ise vastan. Encoding.Default.GetString konverdib numbri vastavaks ascii chariks.
Aga nüüd tekib uus küsimus... juba tükk aega olen üritanud, aga mitte ei suuda välja mõelda kuidas byte'i valuet kätte saada, a la mitte ascii chari vaid nt "132"...
Kommentaarid: 48 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 01.03.2009 13:46:13 Re: Accessi SQLi probleemid + mp3 id3 tagis genre saamine vasta tsitaadiga

Kummalised küsimused sul...

SELECT Title, Artist FROM mp3db GROUP BY Artist


Näiteks MySQL-is annab see sulle nimekirja artistidest koos iga artisti juhusliku looga - tulemus mida enamasti keegi ei taha. Järgmine päring on veel imelikum...

SELECT Title, Artist FROM mp3db WHERE Artist IN (SELECT DISTINCT Artist FROM mp3db)


See on ju täpselt sama mis lihtsalt:

SELECT Title, Artist FROM mp3db


Mida sa õigupoolest saavutada püüad?

madedog kirjutas:
kuidas byte'i valuet kätte saada, a la mitte ascii chari vaid nt "132"...


Hmmm... Aga byte'i väärtus ongi ju number. Kui see keel on ikka C# nagu ma oletan.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
reneSharp
HV kasutaja
reneSharp

liitunud: 13.11.2005




sõnum 01.03.2009 17:35:31 Re: Accessi SQLi probleemid + mp3 id3 tagis genre saamine vasta tsitaadiga

madedog kirjutas:

Aga nüüd tekib uus küsimus... juba tükk aega olen üritanud, aga mitte ei suuda välja mõelda kuidas byte'i valuet kätte saada, a la mitte ascii chari vaid nt "132"...


Katsetasin ka veits .

  const char taht = 'A';
            Console.WriteLine(taht); //prindib ASCII chr A
            Console.WriteLine((byte)taht); //prindib ASCII dec 65
            const byte number = 65;
            Console.WriteLine((char)number);//prindib A
            Console.WriteLine(number);//prindib   65

            var sona = "Album"; 
            //sona baitideks
            var bytes = new byte[sona.Length];
            for (int i = 0; i < sona.Length; i++)
             bytes[i] = (byte) sona[i];


             var bytesAlt =Encoding.ASCII.GetBytes(sona);
            for (int i = 0; i < bytesAlt.Length; i++)
            {
                //tundub et see GetBytes teeb sama asja mis ylal.
                Debug.Assert(bytesAlt[i]==bytes[i]);
            }
            //ning annab sona tagasi ka
            Debug.Assert("Album" == Encoding.ASCII.GetString(bytes));
           


Leidsin jupi koodi : http://www.developerfusion.com/code/4684/read-mp3-tag-information-id3v1-and-id3v2/

        ID3v1 tagreader = new ID3v1("c:\\Remix.mp3");
            tagreader.Read();
            Console.WriteLine(tagreader.Title);
            tagreader.Title = "Uus pealkiri";
            tagreader.updateMP3Tag();


EDIT:
tundub et olid õigel teel, ma täiendasin su klassi veits
Spoiler Spoiler Spoiler
Kommentaarid: 25 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 25
tagasi üles
vaata kasutaja infot saada privaatsõnum
neros
HV Guru
neros

liitunud: 26.11.2003




sõnum 01.03.2009 19:30:38 Re: Accessi SQLi probleemid + mp3 id3 tagis genre saamine vasta tsitaadiga

Jah, see on siiski tulemus mida mul tarvis on. Teine päring ei ole päris täpselt sama imo...
Aga jah, ongi vaja nimekirja artistidest koos juhusliku looga.

Aga see byte teema... krt ma vist jagasin matsu lahti milles teema on, ma kontrollin asja üle...

E:
Jep, nii oligi, kui ma seda funktsiooni kirjutasin, siis läks must täiesti mööda fakt, et see on tegelikult ühe elemendiga massiiv ja mitte lihtsalt number....
Kommentaarid: 48 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum
Brigadir
HV vaatleja
Brigadir

liitunud: 21.05.2002




sõnum 01.03.2009 21:47:30 vasta tsitaadiga

tsitaat:
SELECT Title, Artist FROM mp3db WHERE Artist IN (SELECT DISTINCT Artist FROM mp3db)

See on ju täpselt sama mis lihtsalt:

SELECT Title, Artist FROM mp3db


Täitsa sama vist ikka ei ole. Loomalikult ei ole ma accessi guru, kuid tema päringus annab subquery NULL väärtusega artistidega kirjete eemaldamise efekti. Samas kui artist atribuut on tabelis "not null" constraintiga, siis on subquery täiesti mõttetu ja loomalikult igal juhul saab seda "where artist is not null" tingimusega elegantsemalt teha.

accessi valda, kuid vbl aitab midagi sellist sind edasi
http://objectmix.com/inetserver/282780-select-random-record-access.html selle keevitad oma subquerysse, mis artisti asemel leiab sulle hoopis loo ID väärtuse.

_________________
Vähem möla, pikem samm!
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Accessi SQLi probleemid + mp3 id3 tagis genre saamine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.