Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    133

    VB mysql AUTO_INCREMENT

    Rieccomi a voi con un altro problema

    Connessione al database mysql

    mySqlConn = New System.Data.Odbc.OdbcConnection("DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; PORT=3306; DATABASE=xxx; USER=root; PASSWORD=xxx; OPTION=3;")

    Sql = "CREATE TABLE Agenzie ( UtenteID_Age INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, xxx_Age INTEGER NULL );"

    mySqlCommand.CommandText = Sql
    mySqlCommand.ExecuteNonQuery()

    Il tutto funziona e non da nessun tipo di errore, crea la tabella Agenzie, ma il campo
    UtenteID_Age non è AUTO_INCREMENT.

    Dove ho sbagliato?
    Secondo problema: un database mysql ha bisogno di un periodico pack. Se si come si fa? E quando è sul server (aruba) come si fa?

    (credo di aver droppato e ricreato la tabella Agenzie almeno 50 volte, fra le varie prove eseguite)

    Tomas
    tomas

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    133
    Scusatemi, funziona benissimo! (o quasi)

    1) Usando ODBC non si riescono a eseguire istruzioni multiple sql

    es:
    Sql = "INSERT INTO Agenzie VALUE (1,1); INSERT INTO Agenzie VALUE (2,2);"
    mySqlCommand.CommandText = Sql
    mySqlCommand.ExecuteNonQuery()
    questo non va, o meglio io non sono riuscito a farlo andare

    2) L'inserimento nel campo autoincrementale funziona così

    a) qualsiasi numero gli passate, va bene basta che non ci sia già, se no entra in conflitto l'indice.
    Sql = "INSERT INTO Agenzie VALUE (9,1);"
    Sql = "INSERT INTO Agenzie VALUE (11,2);"
    Sql = "INSERT INTO Agenzie VALUE (7,3);"
    Sql = "INSERT INTO Agenzie VALUE (1,4);"
    Questo funziona benissimo

    Sql = "INSERT INTO Agenzie VALUE (11,1);"
    Sql = "INSERT INTO Agenzie VALUE (11,2);"
    Questo va in errore per violazione di chiave

    b) se gli passate NULL esegue il vero incrementale, ultimo numero inserito+1
    Sql = "INSERT INTO Agenzie VALUE (30,1);"
    Sql = "INSERT INTO Agenzie VALUE (NULL,2);"
    Sql = "INSERT INTO Agenzie VALUE (NULL,3);"
    Sql = "INSERT INTO Agenzie VALUE (NULL,4);"

    i record inseriti saranno
    30,1
    31,2
    32,3
    33,4

    Se visalizzate la struttura della tabella in Access, come tabella collegata usando ODBC, il campo autoincrementale è semplicemente "Numerico" e non "Contatore". Ma funziona correttamente.

    Continuo a non trovare nulla sulla riorganizzazione delle tabelle (compressione o pack del database), qualche indicazione?

    Tomas
    tomas

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.