C# e Sql Server

di il
38 risposte

C# e Sql Server

Salve, sono alle prime armi di C# e Sql Server, mi sto guardando un pò di video.

Ho installato Sql Server Expess 2014 perchè questo video corso è fatto con questa versione.

Ho installato Sql Server e Management Studio.

Ho fatto una tabella denominata Account con i seguenti tre campi:

ID: int

Username: varchar(50)

Password: varchar(50)

Metto dei dati nella tabella,

Username = Admin

Password = Pass

Nel progetto di C# metto l' using: using System.Data.SqlClient;

e poi nell' evento click del button per accedere e passare alla form successiva scrivo:

private void btnLogin_Click(object sender, EventArgs e)
       {
           SqlConnection con = new SqlConnection("Data Source=Localhost; Database=CSharpTut; Integrated Security=True");
           con.Open();
           SqlCommand cmd = new SqlCommand("Select * from Account Where Username='"+txtusername.Text+"' and Password='"+txtPassword.Text+"'", con);
           SqlDataReader sdr;
           sdr = cmd.ExecuteReader();

           if (sdr.Read())
           {
               Dashboard ds = new Dashboard();
               ds.Show();
               this.Hide();
           }
           else
           {
               MessageBox.Show("Incorrect Username or Password", "Message Title", MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
           con.Close();
       }

Solo che mi restuisce questo errore:

System.Data.SqlClient.SqlException
 HResult=0x80131904
 Messaggio=Si è verificato un errore di rete o specifico dell'istanza mentre si cercava di stabilire una connessione con SQL Server. Il server non è stato trovato o non è accessibile. Verificare che il nome dell'istanza sia corretto e che SQL Server sia configurato in modo da consentire connessioni remote. (provider: Named Pipes Provider, error: 40 - Impossibile aprire una connessione a SQL Server)
 Origine=.Net SqlClient Data Provider

Magari sbaglio ad installare Sql Server non ne ho idea perchè ancora non lo conosco affato.

Qualche consiglio in merito?

Distinti Saluti

Fabio Messina

38 Risposte

  • Re: C# e Sql Server

    Ciao,

    è la stringa di connessione al database che non è corretta. Se la connessione è in locale, ma sul Server Sql Express installato sul tuo PC, allora:

    Data Source=".\\SQLEXPRESS";

    AttachDbFilename="C:\\PercorsoCompletoDelTuoDatabase\\CSharpTut.mdf";

    Integrated Security=True;

    Connect Timeout=30

    Quindi:

    string tuaConnessione = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Percorso\\CSharpTut.mdf;Integrated Security=True;Connect Timeout=30"

  • Re: C# e Sql Server

    Ciao, grazie della risposta, ho modificato la stringa di connessione in:

    SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS_2014; AttachDbFilename=C:\\Program Files\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS_2014\\MSSQL\\DATA\\CSharpTut.mdf; Integrated Security=True; Connect Timeout=30");

    solo che adesso mi da un atro errore:

    System.Data.SqlClient.SqlException
     HResult=0x80131904
     Messaggio=Impossibile aprire il file fisico "C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS_2014\MSSQL\DATA\CSharpTut.mdf". Errore del sistema operativo 5: "5(Accesso negato.)"
    Impossibile allegare un database a denominazione automatica per il file C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS_2014\MSSQL\DATA\CSharpTut.mdf. Esiste un database con lo stesso nome oppure il file specificato non può essere aperto oppure si trova in una condivisione UNC.
     Origine=.Net SqlClient Data Provider

    Come risolvo quest' altro errore?

    Distinti Saluti

    Fabio Messina

  • Re: C# e Sql Server

    Ciao

    Se hai installato tutto sul tuo PC, la connection string dovrebbe essere una di queste due:

    Server=localhost;Database=myDataBase;Trusted_Connection=True;
    Server=localhost\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;

    Se poi vuoi altri esempi per configurare altre opzioni, di solito mi rifaccio a questo link: 

    https://www.connectionstrings.com/sql-server/

    Detto questo, occhio a come lavori. Nel codice che hai postato mancano tutte le “using” che sono fondamentali per rilasciare correttamente le risorse. Se lo sai ma hai messo del codice “al volo” giusto per farci capire, allora OK.

    Se invece non sai a cosa serva l'istruzione “using”, allora guardati la documentazione dell'interfaccia IDisposable

  • Re: C# e Sql Server

    Allora, io ho scritto la seguente connessione:

     SqlConnection con = new SqlConnection("Server=FABIO\\SQLEXPRESS_2014;Database=C:\\Program Files\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS_2014\\MSSQL\\DATA\\CSharpTut.mdf;Trusted_Connection=True;");

    Le using sono:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    E mi da il seguente errore:

    System.Data.SqlClient.SqlException
     HResult=0x80131904
     Messaggio=Impossibile aprire il database "C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS_2014\MSSQL\DATA\CSharpTut.mdf" richiesto dall'account di accesso. Accesso non riuscito.
    Accesso non riuscito per l'utente 'Fabio\messi'.
     Origine=.Net SqlClient Data Provider

    Forse manca qualche using?

    Distinti Saluti

    Fabio Messina

  • Re: C# e Sql Server

    Se sei proprio sicuro che il nome del server è “.\\SQLEXPRESS_2014” (anzichè .\\SQLEXPRESS), allora potresti non avere i privilegi per il tuo file di database. Cliccaci su col pulsante destro e aggiungi “Everyone” con tutti i permessi, nei file CSharpTut.mdf e CSharpTut_log.ldf

  • Re: C# e Sql Server

    Per essere sicuro dei dati:

    1. Apri SqlServer Management studio
    2. Nella proprietà “server” ci va quello che trovi in fase di login al campo “Server name”
    3. Nella proprietà “database” ci va il nome del DB, ovvero quello che vedi fra i database nel menu di sinistra del Management Studio

    Io di solito mi appoggio a questi ragionamenti

  • Re: C# e Sql Server

    Allora io ho fatto una cosa, ho formattato il pc perchè non riuscivo a togliere l' istanza SQLEXPRESS_2014 e ho reinstallato tutto e per quanto riguarda Sql Server come nome istanza ho messo solo SQLEXPRESS.

    Come server ho: FABIO\SQLEXPRESS

    Come database ho: CsharpTut

    Scrivo la stringa di connessione in questo modo:

    SqlConnection con = new SqlConnection("Server=FABIO\\SQLEXPRESS;Database=C:\\Programmi\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS\\MSSQL\\DATA\\CSharpTut.mdf;Trusted_Connection=True;");

    eseguo e mi da questo errore:

    'Impossibile aprire il database "C:\Programmi\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\CsharpTut.mdf" richiesto dall'account di accesso. Accesso non riuscito.
    Accesso non riuscito per l'utente 'Fabio\messi'.'

    Forse dipende da qualche impostazione di Sql Server?

    Da premettere che io con C# e Sql Server sono alle prime armi ho sempre lavorato con Vb.Net e Access.

    Cosa devo fare adesso per risolvere il problema?

    Distinti Saluti

    Fabio Messina

  • Re: C# e Sql Server

    Prova con:

    SqlConnection con = new SqlConnection("Server=.\\SQLEXPRESS;AttachDbFilename=C:\\Programmi\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS\\MSSQL\\DATA\\CSharpTut.mdf;Database=CSharpTut;Trusted_Connection=True;");

    anche se, secondo me, la proprietà AttachDbFilename=C:\\Programmi\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS\\MSSQL\\DATA\\CSharpTut.mdf;

    è superflua perchè, mettendo il nome del database (Database=CSharpTut;), è SQLServer che si occupa di aprirlo nella posizione (locale o remota) in cui si trova.

  • Re: C# e Sql Server

    E allora, altro problema diverso:

    SqlConnection con = new SqlConnection("Server=.\\SQLEXPRESS;AttachDbFilename=C:\\Programmi\\Microsoft SQL Server\\MSSQL12.SQLEXPRESS\\MSSQL\\DATA\\CSharpTut.mdf;Database=CSharpTut;Trusted_Connection=True;");

    System.Data.SqlClient.SqlException
     HResult=0x80131904
     Messaggio=Il database 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\CsharpTut.mdf' esiste già. Scegliere un nome di database diverso.
    Impossibile collegare il file 'C:\Programmi\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\CSharpTut.mdf' come database 'CSharpTut'.
     Origine=.Net SqlClient Data Provider

    Ancora ci sta qualcosa che non va.

    Altri consigli?

    Distinti Saluti

    Fabio Messina

  • Re: C# e Sql Server

    Dai che non può essere: è una cosa semplice, smanettando un poco dovresti riuscirci.

    Oppure, c'è qualcosa che non va nella configurazione del tuo SQL Server. 

    Riesci a connetterti, utilizzando il menu Strumenti di Visual Studio?

    Hai creato un account di accesso (login) specificando Windows Authentication?

    Gli hai assegnato almeno i diritti "db_owner" e "db_public"?

    Installa il programma free "Database .NET" da qui:   https://fishcodelib.com/Database.htm

    e vedi se riesci a connetterti alla tua istanza di SQL Server…

  • Re: C# e Sql Server

    Se cerco di connettermi al db da Visual Studio mi dice:

    CsharpTut

    Autorizzazioni insufficienti per aprire il file.

    Rivolgersi al proprietario del file o ad un amministratore per ottenere le autorizzazioni.

    Da cosa piò dipendere questo?

  • Re: C# e Sql Server

    Ti conviene seguire le istruzioni contenute in questo articolo:

    https://learn.microsoft.com/it-it/sql/relational-databases/lesson-1-connecting-to-the-database-engine?view=sql-server-ver16

  • Re: C# e Sql Server

    Io ho fatto tutto come da documentazione, ma ancora niente.

    Se provo a connettermi da Visual Studio mi dice:

    CSharpTut

    Autorizzazioni insufficienti per aprire il file.

    Rivolgersi al proprietario del file o ad un amministratore per ottenere le autorizzazioni.

  • Re: C# e Sql Server

    Salve,

    da File Explorer, prova a verificare la proprieta' del file .mdf

    salutoni romagnoli
    – 
    Andrea

Devi accedere o registrarti per scrivere nel forum
38 risposte