[Visual Basic 2010 EX] Database da utilizzare e relative tecnologie.

sabato 07 aprile 2012 - 02.33
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio Express  |  Access (.mdb)

Brummell Profilo | Newbie

Ciao a tutti.
Sto convertendo in VB 2010 Express, una applicazione che sviluppai 15 anni fa su Access 97. Sino ad oggi le prestazioni sono eccellenti, ma ora ho l'esigenza di farlo.
Come basi dati penserei di mantenere il file .mdb, dato che non mi ha dato preoblemi. Sono a conoscenza anche di SQL Server Compact, ma non so se valga la pena l'adozione. Vorrei invece evitare DB con servizi come SQL Express. Cosa mi consigliate?
Stabilito questo, vorrei sapere cosa devo studiarmi per eseguire semplici operazioni CRUD. Con il vecchio DAO non ho problemi, come anche in SQL. Documentandomi ho appreso dell'adozione di LINQ. Ho provato a creare una classe LINQ con il mio MDB e anche con un MDF, ma risponde (se non ho capito male però) che lavora solo con SQL Server. Ho già connesso VB con il file MDB (anche con quello MDF), creato il dataset etc, ma ora devo utilizzare appunto le Create, Read, Update e Delete. Cosa mi devo studiare?
Perdonate la banalità della questione, ma sono davvero pochi giorni che sono migrato su .NET e quanto scritto sopra sulle tecnologie da applicare per manipolare i dati, mi ha confuso.
Auspico ogni suggerimento. Grazie in anticipo.

Giamp72 Profilo | Junior Member

Io ti consiglio di utilizzare SQLite.. è gratuito, non installi nessun server e visto che usi .Net per la programmazione ti è sufficiente integrare il connector SQLite per ambiente NET, nella tua applicazione e lo puoi utilizzare senza sbatterti troppo utilizzando la sintassi SQL.
Il database SQLite è performante e parecchio robusto.. l'unica attenzione riguarda la multiutenza poichè non vengono supportate operazioni concorrenti..
trovi tutto il materiale che ti serve qui: http://www.sqlite.org/
ciao e buon lavoro
Giamp72

Brummell Profilo | Newbie


Ciao.
Scusa/temi, ho dimenticato un "piccolo dettaglio"...: lavora con più client (da 2 a 4).
Quindi temo di non poter usare SQLite. Possibile che non possa gestirla come fa ad es. Access?
Questi client svolgono le consuete operazioni di cassa di una libreria, con un archivio da 80.000 a 300.000 records.
Grazie 1.000.

P.S.
il fattore gratuito è fondamentale per la mia esigenza, ma se non sbaglio, il file access usato *solo come contenitore di dati* è legale.

Giamp72 Profilo | Junior Member

SQLite non gestisce autonomamente i lock delle tabelle.. ma questo non vuol dire che non te li puoi gestire tu con una tabella apposita dove gestisci i semafori per i client che devono scrivere sul database..
Ti ho consigliato SQLite poichè è il sistema secondo me migliore in rapporto prestazioni/sbattimento per l'installazione.
Se vuoi qualcosa di piu professionale (e più complesso) ti consiglio MySQL (è sempre gratuito) si connette a Net sempre attraverso un connector e lo si usa con SQL standard.. lo svantaggio è dover installare un server di database (niente a che vedere con un SQLServer, però in alcuni casi ho avuto qualche difficoltà su configurazioni non standard della rete) I vantaggi di MySQL sono prestazioni, gestione dei Lock sulle tabelle, facilità di gestione attraverso i numerosi software di front-end (io uso Heidi SQL)
In merito alla connettività all'applicazione Net, come ti dicevo, installi il connettore MySQL connector, dichiari la connessione, imposti la stringa di connessione ed il gioco è fatto (le stesse cose che faresti con SQLite...)
Personalmente ho scartato le soluzioni Microsoft perchè ho avuto sempre problemini di varia natura, access si corrompe, SQL server non è facile da installare, la versione Express ha un bel po di limitazioni ecc ecc..

A te la scelta

Giamp72

Brummell Profilo | Newbie

Stavo giusto leggendo alcune comparazioni su Access, MySql e SQLite, mentre mi è arrivato il tuo messaggio.
Con sorpresa ho appreso da un thread che anche Access NON è multiclient?! Confermi? Come'è possibile? Lo uso da 15 anni in tal senso e non si è mai bloccato. Forse ho una concezione errata del concetto "multiutenza".
Alla luce di ciò e, come premesso, non volendo installare servizi, credo che opterò proprio per il tuo consiglio. Se tu avessi un link sottomano che reputi utile, mi farebbe comodo per studiarmi il modo di gestire più utenze, come mi hai accennato.
Grazie per i preziosi consigli.

P.S.
dalle mie domande/risposte, avrai intuito che non sono un professionista ;)

Giamp72 Profilo | Junior Member

nn ti preoccupare... i forum come questo servono anche a chi fa questo lavoro come me ehehehehe non si finisce mai di imparare.
Access nn è multiutenza nel senso che non gestisce da solo la casistica in cui due client scrivono contemporaneamente lo stesso record.
Gestire la multiutenza significa proprio questo: governare il fatto che due utente possano accedere in scrittura allo stesso record.
Per gestire questa situazione, alcuni database come my sql ti danno la possibilità di fare un lock, ovvero allocare una tabella mentre il client ci
sta scrivendo dentro.. e se un altro client prova a scriverci, viene messo automaticamente in coda, finchè il primo client non sblocca la tabella.

Tu puoi gestire questa situazione semplicemente utilizzando una tabella in cui scrivi un flag, mentre un client scrive un dato, e fai in modo che gli altri non
possano scrivere finche quel flag non si azzera.. immagina di avere la tabella clienti in cui + client scrivono record. Puoi creare una tabella GestioneLock con 2
campi: "nome tabella", e "lock".
Quando un client deve scrivere un cliente fai una query sulla tabella GestioneLock con "Clienti" se nel campo lock c'è zero, ci scrivi 1 altrimenti attendi magari per 1 decimo di secondo e poi riprovi finche non trovi scritto zero. Quando hai finito di scrivere i dati del clienti rimetti a zero il valore di "lock" nella tabella GestioneLock.

Credo ora ti sia chiaro il giro.. questo è un sistema, e non è infallibile.. ma cmq riduce di molto i casi di errore e ti permette una gestione della multiutenza con
un db che non è multiutenza.

ciao e buon lavoro
Giamp72

MarKonE Profilo | Guru

E utilizzare VistaDB ? http://www.vistadb.net/

Se la struttura del DB non è complessa potrebbe essere una soluzione molto valida, leggera e in codice managed. Vedi una comparazione con sqllite (peraltro valido) http://www.vistadb.net/compare/sqlite.aspx

Ciao !
My Blog... http://blogs.dotnethell.it/Mark/

Brummell Profilo | Newbie

Faccio tesoro dei tuoi preziosi consigli. Gentilissimo.
Grazie infinite ;-)

Brummell Profilo | Newbie

Do subito un'occhiata!
Grazie anche a te Markone.

Brummell Profilo | Newbie

Markone, è disponibile alla modica cifra di $1.295 :)

Giamp72 Profilo | Junior Member

..in realtà se non lo usi per scopi commerciali è gratuito..
ad ogni modo con SQLite non ti poni il problema dato che è opensource.

Giamp72

Brummell Profilo | Newbie

Onestamente ho cercato la clausola "per scopi comm.li", ma evidentemente il mio inglese non mi ha facilitato. Di nuovo grazie e scusa Markone se ho frainteso ;)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5