Visualizzazione dei risultati da 1 a 7 su 7

Discussione: creare db access

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    257

    creare db access

    Vorrei creare in automatico un db access.
    Con le asp semplici usavo adox,
    con asp.net cosa devo usare?

    Se è sempre adox, in che modo lo si utilizza?

    Ciao e grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    E' da tanto che non uso Adox o che non manipolo Access via codice. Ho però un vecchio esercizio che fa uso di Adox:
    Per prima cosa si aggiunge nelle References un riferimento alla libreria: Microsoft ADO Ext. 2.8 for DDL and Security


    Dopo di che si può utilizzare. Ti mando un esempio che Aggiunge/toglie colonna con AdoX e che Aggunge/toglie colonna con Alter Table

    codice:
    'Aggiunge/toglie colonna con AdoX
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    	Dim adoCn As New ADODB.Connection
    	adoCn.Open(StringaConnessione)
    
    	Dim cat As New ADOX.CatalogClass
    	cat.ActiveConnection = adoCn
    
    	Dim t As ADOX.Table = cat.Tables("campi")
    
    	Try
    		t.Columns.Append("xyz", ADOX.DataTypeEnum.adWChar, 50)
    	Catch ex As Exception
    		t.Columns.Delete("xyz")
    	Finally
    		adoCn.Close()
    		Libreria.DataBind(Me.DataGrid1, StringaConnessione, "SELECT * FROM CAMPI", "ID")
    	End Try
    
    
    End Sub
    
    'Aggunge/toglie colonna con Alter Table
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    	'con.Execute("CREATE TABLE tblCustomers (CustomerID LONG NOT NULL, [Last Name] TEXT(50) NOT NULL, [First Name] TEXT(50) NOT NULL, Phone TEXT(10), Email TEXT(50), [BYTE] BYTE, [INTEGER] SMALLINT, [LONG] LONG, [SINGLE] SINGLE, [DOUBLE] DOUBLE, [DATE] DATE, [CURRENCY] CURRENCY, [LOGICO] LOGICAL, [MEMO] MEMO, [COUNTER] AUTOINCREMENT, [OLEOBJECT] OLEOBJECT  )")
    	'con.Execute("CREATE INDEX idxCustomerID ON tblCustomers (CustomerID) WITH PRIMARY")
    
    	Dim con As OleDbConnection
    	Dim sql$ = "ALTER TABLE CAMPI ADD COLUMN XYZ LONG"
    	Dim Com As OleDbCommand
    
    	Try
    		con = New OleDbConnection(StringaConnessione)
    		con.Open()
    		Com = New OleDbCommand(sql, con)
    		Com.ExecuteNonQuery()
    
    	Catch ex As Exception
    		Try
    			sql = "ALTER TABLE CAMPI DROP COLUMN XYZ "
    			Com.CommandText = sql
    			Com.ExecuteNonQuery()
    
    		Catch ex1 As Exception
    			PrintLn(ex.Message)
    		End Try
    	Finally
    		con.Close()
    		Libreria.DataBind(Me.DataGrid1, StringaConnessione, "SELECT * FROM CAMPI", "ID")
    	End Try
    
    End Sub
    Pietro

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ps. Naturalmente, correggi:

    nella clausola Finally

    prima fai il DataBind con la giusta funzione:
    Libreria.DataBind(Me.DataGrid1, con, "SELECT * FROM CAMPI", "ID")

    cioè gli passi la connessione e non la stringa di connessione,


    Poi chiudi la connessione:
    con.Close()
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    257
    Ok Pietro ti ringrazio,
    il mio problema però è proprio
    creare il db e non le tabelle che vi sono dentro,
    quello lo saprei fare anche in sql.

    Non so invece come
    si aggiunge nelle References un riferimento alla libreria: Microsoft ADO Ext. 2.8 for DDL and Security
    Potresti farmi un esempio
    o è troppo complicato?

    Ciao

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    allora, per creare i riferimenti uso visual studio e il modo è banale. Senza Visual studio ... :master: ...

    Comunque, dissoterrando un vecchissimo esercizio in visual basic 6:

    codice:
            Dim db As DAO.Database
            Dim dbe As New DAO.DBEngine
            db = dbe.Workspaces(0).CreateDatabase("c:\tmp\prova.mdb", ";LANGID=0x0409;CP=1252;COUNTRY=0", 2)
            db.Close()
    che stranamente mi funziona

    Non so se CreateDatabase esista pure con Ado o con AdoX


    nb: di più non so
    Pietro

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    va bene si può fare pure con AdoX

    codice:
            Dim Catalog As New ADOX.Catalog
            Dim StringaConnessione$ = "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=C:\tmp\prova.mdb;Mode=Share Deny None;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False"
            Catalog.Create(StringaConnessione)
            DirectCast(Catalog.ActiveConnection, ADODB.Connection).Close()
    alla fine, chiudo SEMPRE la connessione, altrimenti il database creato risulta sempre in uso
    Pietro

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2000
    Messaggi
    257
    ok grazie,
    provo con il primo metodo
    visto che il secondo non potrebbe cmq funzionarmi

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 © 2024 vBulletin Solutions, Inc. All rights reserved.