ottobre 2008 - Posts
Dalla comunity Microsoft, si trova un nuovo blog, per coloro che utilizzano il database Sql Server.
Dal seguente sito http://blogs.msdn.com/sqlstuff/default.aspx si trovano post riguardante le varie versioni del database server di Microsoft.
Riporto l'articolo scritto per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/art_adonet-inserire-e-salvare-immagine-in-un_131.aspx riguardante la possibilità di inserire e visulizzare le immagini in un database Microsoft Access.
In questo articolo, vedremo come salvare delle immagini (formato jpeg e gif) in un campo di una tabella di un databse Microsoft Access. Il campo è di tipo oggetto ole. Con qualche modifica al codice, si può utilizzare anche per un database sql server con campo di tipo blob. A fine articolo trovate il sorgente di esempio utilizzato in questo articolo, per il lnguaggio Visual Basic Net e C#
Ora vediamo, come inserire e visualizzare le immagini in un database, salvando lo stream dati dell'immagine in questo campo.
Creazione del database.
Si crea un nuovo database Microsoft Access 2003, con una tabella, una colonna di tipo contatore e l'altra di tipo oggetto ole, salvate la tabella ed il database.
Creazione del progetto.
Si crea un nuovo progetto di tipo windows application, nella finestra principale, inseriamo tre pulsanti, una casella di testo, una label un controllo picturebox, due radiobutton ed un controllo groupbox. Il tutto come mostrato in figura 1.

Figura 1
I pulsanti, avranno il compito, di selezionare l'immagine, di salvare l'immagine nel database e di visualizzarla.
Stesura del codice.
Ora passiamo al codice. Utilizziamo lo spazio dei nomi, oledb per la gestione dei dati per il database Microsoft Access e system.io per la gestione dei file.
Di seguito si riporta tale dichiarazioni.
VB.Net
Imports System.Data.OleDb
Imports System.IO
C#
using System.IO;
using System.Data.OleDb;
Il pulsante per la ricerca delle immagini, chiamato btnImmagine, avrà il compito di instanziare un oggetto di tipo openfiledialog, per la ricerca delle immagini, ed impostare la proprietà text della casella di testo (txtimmagine) con il percorso e nome del file immagine.
Di seguito si riporta il frammento di codice di tali operazioni.
VB.Net
Private Sub btnImmagine_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImmagine.Click
Dim dlgImmagine As New OpenFileDialog()dlgImmagine.Title = "Seleziona un immagine da importare"
dlgImmagine.Multiselect = False
dlgImmagine.Filter = "Formato JPEG(*.jpg)|*.jpg|Formato GIF (*.gif)|*.gif"
dlgImmagine.FilterIndex = 2
dlgImmagine.FileName =
""
dlgImmagine.ShowDialog()
txtimmagine.Text = dlgImmagine.FileName
End Sub
C#
private void btnImmagine_Click(object sender, EventArgs e)
{
OpenFileDialog dlgImmagine = new OpenFileDialog();
dlgImmagine.Title =
"Seleziona un immagine da importare";dlgImmagine.Multiselect = false;dlgImmagine.Filter = "Formato JPEG(*.jpg)|*.jpg|Formato GIF (*.gif)|*.gif";
dlgImmagine.FilterIndex = 2;
dlgImmagine.FileName = "";
dlgImmagine.ShowDialog();
txtimmagine.Text = dlgImmagine.FileName;
}
Il pulsante per il salvataggio dell'immagine (chiamato BtnSalva) avrà il compito di salvare in formato stream dati l'immagine nel database, si utilizzerà la classe filestream, per la gestione del file, mentre la classe dataset, oledbadapter oledbcommandbuilder per la gestione dei dati, in particolare per il salvataggio dei dati. La variabile di tipo array byte, conterrà le informazioni dell'immagine selezionata.
Di seguito si riporta il codice delle suddette dichiarazioni.
VB.Net
Private Sub btnSalva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalva.Click
If txtimmagine.Text Is String.Empty Then
Exit Sub
End If
'Creo lo stream dati byte, della immagine
Dim fs As FileStream = New FileStream(txtimmagine.Text, FileMode.OpenOrCreate, FileAccess.Read)Dim ImgData(fs.Length) As Byte
fs.Read(ImgData, 0, System.Convert.ToInt32(fs.Length))
fs.Close()
'Mi connetto al db
Dim sql As String = "SELECT * FROM dati"
Dim condati As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\dbimmagine.mdb")
Try
If condati.State <> ConnectionState.Open Then
condati.Open()
End If
'oggetti per il salvataggio dei dati
Dim adapterDati As OleDbDataAdapter = New OleDbDataAdapter(sql, condati)Dim cmdBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(adapterDati)Dim dtsDati As New DataSet()
adapterDati.MissingSchemaAction = MissingSchemaAction.AddWithKey
'Carico il dataset
adapterDati.Fill(dtsDati,
"Dati")'Creo un datarow che mi rappresenta la nuova riga
Dim dtrRiga As DataRow = dtsDati.Tables("Dati").NewRow()
dtrRiga(
"immagine") = ImgData' aggiungo la riga al dataset
dtsDati.Tables("Dati").Rows.Add(dtrRiga)
'Salvo i dati modificati
adapterDati.Update(dtsDati,
"Dati")MessageBox.Show("Immagine salvata")
Catch ex As ExceptionMessageBox.Show("Errore: " & ex.Message)
Finally
'Chiudo la connessione
If Not condati Is Nothing Then
If condati.State = ConnectionState.Open Then
condati.Close()
End If
condati.Dispose()
End If
End Try
End Sub
C#
private void btnSalva_Click(object sender, EventArgs e)
{
if (txtimmagine.Text == string.Empty)
{
return;
}
//Creo lo stream dati byte, della immagine
FileStream fs = new FileStream(txtimmagine.Text, FileMode.OpenOrCreate, FileAccess.Read);
Byte[] ImgData = new Byte[fs.Length];fs.Read(ImgData, 0, System.Convert.ToInt32(fs.Length));
fs.Close();
//Mi connetto al db
string sql = "SELECT * FROM dati";
OleDbConnection condati = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=C:\\dbimmagine.mdb");try
{
if (condati.State != ConnectionState.Open)
{
condati.Open();
}
// oggetti per il salvataggio dei dati
OleDbDataAdapter adapterDati = new OleDbDataAdapter(sql, condati);
OleDbCommandBuilder cmdBuilder = new OleDbCommandBuilder(adapterDati);DataSet dtsDati = new DataSet();
adapterDati.MissingSchemaAction =
MissingSchemaAction.AddWithKey;//Carico il dataset
adapterDati.Fill(dtsDati, "Dati");
//Creo un datarow che mi rappresenta la nuova riga
DataRow dtrRiga = dtsDati.Tables["Dati"].NewRow();dtrRiga["immagine"] = ImgData;
// aggiungo la riga al dataset
dtsDati.Tables[
"Dati"].Rows.Add(dtrRiga);//Salvo i dati modificati
adapterDati.Update(dtsDati, "Dati");MessageBox.Show("Immagine salvata");
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
finally
{
//Chiudo la connessione
if (condati == null)
{
if (condati.State == ConnectionState.Open)
{
condati.Close();
}
condati.Dispose();
}
}
}
Il pulsante per la visualizzazione dell'immagine (denominato btnVisualizza) avrà il compito di visualizzare l'immagine in un controllo picturebox, se viene scelta la radiobutton con il valore "si", ossia per il salvataggio fisico dell'immagine, verrà creato un file immagine sul computer, altrimenti, se l'opzione selezionata ha il valore no, non verrà creato nessun file immagine.
Utilizzeremo le classi filestream e binarywriter per la generazione del file, mentre le classi oledbcommand, oledbdatareader per la lettura dei dati.
Di seguito si riporta il codice per la visualizzazione dell'immagine.
VB.Net
Private
Sub btnVisualizza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVisualizza.ClickDim sql As String = "SELECT * FROM dati"
Dim conDati As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\dbimmagine.mdb")
Try
If conDati.State <> ConnectionState.Open Then
conDati.Open()
End If
Dim cmd As OleDbCommand = New OleDbCommand(sql, conDati)
Dim fs As FileStreamDim binaryScrivi As BinaryWriter
Dim Dimensionebuffer As Integer = 300000Dim outbyte(300000 - 1) As Byte
Dim reader As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess)
'leggo il primo record
reader.Read()
'senza salvataggio della immagine
If rdbSi.Checked = False Then
Dim arrayStreamDati() As Byte = reader.Item("immagine")
If arrayStreamDati.Length > 0 Then
'Carico in uno memoryStream l'array strem datiDim Stream As MemoryStream = New MemoryStream(arrayStreamDati, True)
Stream.Write(arrayStreamDati, 0, arrayStreamDati.Length)
'Creo un oggetto bitmap contente l'immagine
Dim immagine As Bitmap = New Bitmap(Stream)'carico nella picture box
PictureBox1.Image = immagine
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
'Chiudo lo stremadati
Stream.Close()
End If
Else
'Salvo l'immagine sul computer
fs =
New FileStream("C:\pippo.bmp", FileMode.OpenOrCreate, FileAccess.Write)binaryScrivi = New BinaryWriter(fs)
reader.GetBytes(1, 0, outbyte, 0, Dimensionebuffer)
binaryScrivi.Write(outbyte)
binaryScrivi.Flush()
'Chiudo gli oggetti
binaryScrivi.Close()
fs.Close()
reader.Close()
'Visualizzo l'immagine
Dim immagine As Image = Nothing
immagine = Image.FromFile("C:\pippo.bmp")
PictureBox1.Image = immagine
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
End If
Catch ex As Exception
MessageBox.Show(
"Errore: " & ex.Message)Finally
'chiusura connessione
If Not conDati Is Nothing Then
If conDati.State = ConnectionState.Open Then
conDati.Close()
End If
conDati.Dispose()
End If
End Try
End Sub
C#
private void btnVisualizza_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM dati";
OleDbConnection conDati = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=C:\\dbimmagine.mdb");try
{
if (conDati.State != ConnectionState.Open)
{
conDati.Open();
}
OleDbCommand cmd = new OleDbCommand(sql, conDati);
FileStream fs;BinaryWriter binaryScrivi;
Int32 Dimensionebuffer = 300000;Byte[] outbyte = new Byte[300000 - 1];
OleDbDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);//leggo il primo record
reader.Read();
//senza salvataggio della immagineif (rdbSi.Checked == false)
{
Byte[] arrayStreamDati = (Byte[])reader["immagine"];// Item["immagine"];if (arrayStreamDati.Length > 0)
{
//Carico in uno memoryStream l'array strem datiMemoryStream Stream = new MemoryStream(arrayStreamDati, true);
Stream.Write(arrayStreamDati, 0, arrayStreamDati.Length);
//Creo un oggetto bitmap contente l'immagine
Bitmap immagine = new Bitmap(Stream);//carico nella picture box
PictureBox1.Image = immagine;
PictureBox1.SizeMode =
PictureBoxSizeMode.StretchImage;//Chiudo lo stremadati
Stream.Close();
}
}
else
{
//Salvo l'immagine sul computer
fs =
new FileStream("C:\\pippo.bmp", FileMode.OpenOrCreate, FileAccess.Write);binaryScrivi = new BinaryWriter(fs);
reader.GetBytes(1, 0, outbyte, 0, Dimensionebuffer);
binaryScrivi.Write(outbyte);
binaryScrivi.Flush();
//Chiudo gli oggetti
binaryScrivi.Close();
fs.Close();
reader.Close();
//Visualizzo l'immagine
Image immagine = null;immagine = Image.FromFile("C:\\pippo.bmp");
PictureBox1.Image = immagine;
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
finally
{
//chiusura connessioneif (conDati != null)
{
if (conDati.State == ConnectionState.Open)
{
conDati.Close();
}
conDati.Dispose();
}
}
}
Conclusioni:
In questo articolo, abbiamo visto come tramite le classi del namespace system.io e system.oledb, possiamo salvare un immagine in un database Microsoft Access e visualizzarle in un controllo picturebox, sia con e senza creazione del file immagine. Una soluzione, per non dipendere da file locali.
Tramite la parola download si può scaricare il file di esempio utilizzato nell'articolo.
Download.
Rilasciati i Feature pack di Microsoft Sql Server 2008, questi tools, ampliano gli strumenti messi a disposizione dal server db Microsoft.
Da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=228de03f-3b5a-428a-923f-58a033d316e1&DisplayLang=it potete scaricare questo pacchetto, per aggiungere nuove funzionalità al database Sql Server 2008.
Per maggiori informazioni e download, visitate il sito indicato.
Nuovi aggiornamenti per il database Sql Server 2008. Da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=9f783224-9871-4eea-b1d5-f3140a253db6&DisplayLang=it potete scaricare un tools, per la creazione dei report.
Riporto la descrizione di tale strumento:
Generatore report 2.0 per Microsoft SQL Server 2008 Reporting Services rappresenta un ambiente intuitivo e analogo a Office per la creazione di report che consente a utenti esperti e aziendali di sfruttare la propria esperienza nei prodotti Microsoft Office 2007. Generatore report 2.0 per Microsoft SQL Server 2008 Reporting Services supporta le funzionalità complete di SQL Server 2008 Reporting Services, ad esempio:
- Layout di report flessibile del linguaggio RDL di SQL Server 2008
- Visualizzazioni dei dati, inclusi grafici e contatori
- Caselle di testo in formato RTF
- Esportazione in formato Microsoft Office Word
Le funzionalità specifiche di Generatore report 2.0 consentono di semplificare il processo di creazione e di modifica dei report e delle query e includono le funzionalità seguenti:
- Semplicità di utilizzo delle procedure guidate per la creazione di aree dati grafico, matrice e tabella
- Supporto per l'apertura e la modifica dirette di report archiviati nel server di report
- Supporto per l'utilizzo di risorse del server, ad esempio origini dati condivise
- Strumenti di progettazione query per più origini dati, ad esempio Progettazione query di Microsoft SQL Server.
Per il download e maggiori informazioni visitate il sito indicato
Vi segnalo questo articolo http://www.simple-talk.com/sql/learn-sql-server/sql-server-2008-the-new-data-types/ nel quale sono illustrate le novità di Sql Server 2008 per quanto concerne i tipi di dati.
L'articolo è in lingua inglese, ed è tratto dal manuale Brad's Sure Guide to SQL Server 2008 scaricaribile gratuitamente dal seguente sito http://www.red-gate.com/specials/ToolbeltBradsure.htm?utm_source=ssc&utm_medium=email&utm_content=Bradsure-080831&utm_campaign=sqltoolbelt
Che dirvi... buona lettura :-)))
L'articolo qui di seguito, scritto per il sito iprogrammatori http://www.iprogrammatori.it/articoli/programmazione/art_aggiungere-un-database-da-codice-in-sql-_132.aspx illustra una tecnica di come effettuare un attach di un database Sql server.
L’esempio che viene proposto, illustra una tecnica di come effettuare un “attach” di un database (“.mdf”) in un Database Sql Server 2005, tramite la tecnologia .Net con i linguaggi di programmazione Visual Basic Net e C#.
In un primo esempio, utilizzeremo la classe sqlConnection impostandogli direttamente la connectionstring , impostandogli, mentre nel secondo caso, utilizzaremo in aggiunta alla classe sqlconnection, anche la classe sqlconnectionstringbuilder.
Creazione dell’interfaccia.
Si crea un nuovo progetto in Visual Studio 2005, di tipo Windows Application, nella form inseriamo due pulsanti, il tutto come mostrato in figura 1.

.
Figura 1
Stesura del codice.
Terminata la fase di creazione della nostra form, passiamo in visualizzazione codice, come spazio dei nomi utilizzeremo systen.data.sqlclient, per la gestione delle classi per il database sql server.
Di seguito si riporta tale frammento.
VB.Net
Imports System.Data.SqlClient
C#
using System.Data.SqlClient;
Per il primo pulsante, quella con la scritta “Attach –SqlConnectionString”, scriviamo il codice che fa uso della classe sqlconnection, e passandogli nel costruttore, la connectionstring con scritta "AttachDBFilename", il tutto come riportato qui di seguito.
VB.Net
Dim condati As New SqlConnection("Data Source=(local);AttachDbFilename=C:\immagini.mdf;Initial Catalog=Nomedb;Integrated Security=True")
condati.Open()
C#
SqlConnection condati = new SqlConnection("Data Source=(local);AttachDbFilename=C:\\immagini.mdf;Initial Catalog=Nomedb;Integrated Security=True");
condati.Open();
Mentre per il pulsante con la scritta “Attach – SqlConnectionStringBuilder” utilizzeremo le classi sqlconnectionstring e sqlconnectionstringbuilder, utilizzando la proprietà attachdbFilename di quest'ultima classe, si potrà fare un attach del database.
Il tutto come riportato qui di seguito.
VB.Net
Dim stringConnection As String = "Server=(local);" & "Integrated Security=True"
Dim conStringBuilder As New SqlConnectionStringBuilder(stringConnection)
'imposto la proprietà in cui si trova il db mdf
conStringBuilder.AttachDBFilename = "C:\immagini.mdf"
'imposto il nome
conStringBuilder.InitialCatalog = "NomeDB"
Dim ConDati As New SqlConnection(conStringBuilder.ConnectionString)
ConDati.Open()
C#
string stringConnection = "Server=(local);" + "Integrated Security=True";
SqlConnectionStringBuilder conStringBuilder = new SqlConnectionStringBuilder(stringConnection);
//imposto la proprietà in cui si trova il db mdf
conStringBuilder.AttachDBFilename = "C:\\immagini.mdf";
//imposto il nome
conStringBuilder.InitialCatalog = "NomeDB";
SqlConnection ConDati = new SqlConnection(conStringBuilder.ConnectionString);
ConDati.Open();
Conclusioni
Questo esempio di codice, che si può scaricare qui di seguito, tramite la parola download, ha illustrato una tecnica di come aggiungere da codice un database al server db di sql Server 2005.
Download
Come molti di voi già sanno, tra ottobre e novembre, si svolgeranno un ciclo di eventi molto interessanti riguardante la tecnologia Microsoft, chiamati appunto Microsoft Days (dove ci sarò anch'io, per Roma :-)))) ) http://blog.shareoffice.it/emanuele/archive/2008/09/24/9697.aspx suddivisi per developer e professionisti IT.
Dopo gli eventi Microsoft, si potrà assistere anche ai Community After Hour, ossia l'evento prosegue, con interventi di alcuni membri di alcune comunità italiane sulla tecnologia Microsoft.
Tra queste, vi segnalo la prima in ordine cronologico, che è quella organizzata dalla comunità visual basic tips e tick http://www.visual-basic.it/ , l'evento è molto interessante, come potete leggere dall'agenda segnalata nel post di Alex http://community.visual-basic.it/alessandro/archive/2008/10/06/23845.aspx .
Ricordo, ancora quell'estate del 2004, quando il mitico e gentile Gianluca, organizzò a Firenze un evento (che poi risultò il migliore di tutti i tempi) sulla tecnologia .Net. Oltre agli argomenti, che di sicuro erano interessanti, anche la possibilità di ricevere un libro, software e la versione di Visual Studio, fui triste, non quanto al materiale (non per il materiale, me se allungato il naso, è normale? :-))) ) ma quanto non vedere il mitico Gianluca in azione.
E già, ho avuto il grande piacere ed onoere di conoscere Gianluca e Luca Bianchi, due persone, tecnicamente bravissime, ed umanamente grandiosi, e vederli in azione entrambi, posso garantire che è una bella coppia (intesa come tecnici, non pensate male :-))) ) un bellissimo abbinamento.
Inoltre con loro si aggiunge anche Alessandro Del Sole, che in questi ultimi mesi, si sta facendo molto notare sul web, per i suoi preziosi post, articoli e libri ;-))) .
Insomma, a parte tutto, partecipare al loro evento, è davvero fantastico, non solo per i contenuti, che sono molto validi, ma per la loro alta professionalità, vi assicuro, che sono davvero molto bravi (più di me, be non ci vuole tanto :-))) ). E quindi che aspettate? il 16 ottobre (giorno dell'evento) è alle porte, iscrivetivi dal seguente link http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032391657&Culture=it-IT .
E poi, udite udite, da quanto mi sembra di sentire, ci sarà anche una cena (chiederò conferma) allora si che ci sarà tanto da divertirsi, ma non solo, scambiare opinioni e tanto altro, alle loro cene, mi sono sempre trovato bene ;-))).
Un evento a cui non si può mancare, e poi, conoscendoli, sono molto disponibili, quindi ogni vostro dubbio, sarà chiarito dalla loro immensa professionalità.
L'evento, anche'esso è gratuito, quindi....
Che dirvi.... buona partecipazione.
Great :-))))
Questo esempio di codice, illustra una tecnica, di come creare una funzione di evento, per gestire il cambiamento di stato, della classe connessione (Sqlconnection) per il database Sql server.
La classe SqlConnection, ha un evento, denominato StateChange, il quale ci permette di sapere il cambiamento di stato, della connessione al database.
Questo esempio, illustra il suo utilizzo.
Creare una funzione di evento, nella quale visualizziamo un messaggio a video, per indicare lo stato precedente al cambiamento e quello attuale.
VB.Net
'Evento per il cambio di stato della connessione
Private Sub ConDati_CambiaStato(ByVal sender As Object, ByVal e As StateChangeEventArgs)
MessageBox.Show("Origine: " & e.OriginalState & " attuale: " & e.CurrentState)
End Sub
C#
//Evento per il cambio di stato della connessione
void ConDati_CambiaStato(object sender, StateChangeEventArgs e)
{
MessageBox.Show("Origine: "+ e.OriginalState + " attuale: " + e.CurrentState);
}
A questo punto, nel codice in cui si effettua la connessione, dobbiamo aggiungere un gestore di evento, ossia assegnare all'evento StateChanged, la nostra funzione evento.
VB.Net
Dim con As String = "Persist Security Info=False;Integrated Security=true;Initial Catalog=test;server=(local)"
Using ConDati As New SqlConnection(con)
Try
ConDati.Open()
'Creo un gestore di evento per il cambio di stato
AddHandler ConDati.StateChange, AddressOf ConDati_CambiaStato
'codice
Catch exdb As SqlException
MessageBox.Show("Errore:" & exdb.Message)
Return
Catch ex As Exception
MessageBox.Show("ERrore:" & ex.Message)
Return
End Try
ConDati.Close()
End Using
C#
string con = "Persist Security Info=False;Integrated Security=true;Initial Catalog=test;server=(local)";
using (SqlConnection ConDati = new SqlConnection(con))
//Creo un gestore di evento per il cambio di stato
{
ConDati.StateChange += new StateChangeEventHandler(ConDati_CambiaStato);
try
{
ConDati.Open();
//Codice
}
catch (SqlException exdb)
{
MessageBox.Show("Errore:" + exdb.Message);
return;
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
return;
}
ConDati.Close();
}
Il frammento di codice qui di seguito, illustra una tecnica di come ottenere la versione di Sql Server, tramite Ado.Net.
In sql server, tramite il comando select @@version, possiamo ottenere la versione di sql server, ma con la proprietà ServerVersion della classe sqlconnection, possiamo ottenere tale valore.
VB.Net
Dim con As String = "Persist Security Info=False;Integrated Security=true;Initial Catalog=test;server=(local)"
Using ConDati As New SqlConnection(con)
Try
ConDati.Open()
'Verifico la versione:
If String.Compare(ConDati.ServerVersion, "09") >= 0 Then
MessageBox.Show("Versione 2005 o superiore di sql Server")
Else
MessageBox.Show("Versione di Sql server precedente alla 2005")
End If
Catch exdb As SqlException
MessageBox.Show("Errore:" & exdb.Message)
Return
Catch ex As Exception
MessageBox.Show("ERrore:" & ex.Message)
Return
End Try
ConDati.Close()
End Using
C#
string con = "Persist Security Info=False;Integrated Security=true;Initial Catalog=test;server=(local)";
using (SqlConnection ConDati = new SqlConnection(con))
{
try
{
ConDati.Open();
//Verifico la versione
if (string.Compare(ConDati.ServerVersion, "09") >= 0)
{
MessageBox.Show("Versione 2005 o superiore di sql Server");
}
else
{
MessageBox.Show("Versione di Sql server precedente alla 2005");
}
}
catch (SqlException exdb)
{
MessageBox.Show("Errore:" + exdb.Message);
return;
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
return;
}
ConDati.Close();
}
Vi segnalo un nuovo aggiornamento per Microsoft Sql Server 2008, da questo sito http://www.microsoft.com/downloads/details.aspx?FamilyID=765433f7-0983-4d7a-b628-0a98145bcb97&DisplayLang=it potete scaricare la nuova documentazione in linea in lingua italiana, aggiornata ad agosto 2008.
Che dirvi.... buon download :-))))