PDA

View Full Version : [C#] Problema con ADO.net


mto89
03-08-2010, 08:28
ciao, da poco mi sto interessando ai database e ADO.Net, però ho problemi nelle prime prove, sia su codice scritto da me, sia su codice esempio.
Vi incollo il pezzo:

static void Main(string[] args)
{
SqlConnectionStringBuilder bd = new SqlConnectionStringBuilder();
bd.DataSource = "localhost";
bd.InitialCatalog = "Northwind";
bd.IntegratedSecurity = true;

SqlConnection conn = new SqlConnection(bd.ConnectionString);
try
{
conn.Open();
SqlCommand com = new SqlCommand("SELECT * FROM Products");
SqlDataReader reader = com.ExecuteReader();
........

Quando l'esecuzione arriva al codice in rosso, si apre la shell e non accade nient'altro, devo chiuderla.
Nel blocco catch non ci entra...qual'è la causa secondo voi?
Grazie.


EDIT: mi correggo, dopo una decina di secondi entra nel catch dandomi il seguente messaggio di errore:
“A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. <Provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server>
Il database in questione è nella cartella del progetto

RaouL_BennetH
03-08-2010, 09:29
Che tipo di database è ?

mto89
03-08-2010, 11:32
Che tipo di database è ?

Microsoft office access database

RaouL_BennetH
03-08-2010, 11:48
Microsoft office access database

Ecco, quindi l'errore che ti da è giusto. Probabilmente hai settato dei parametri nella tua stringa di connessione per collegarti ad un db sql server.

Posta un pò la stringa :)

dojolab
03-08-2010, 12:13
Ecco, quindi l'errore che ti da è giusto. Probabilmente hai settato dei parametri nella tua stringa di connessione per collegarti ad un db sql server.

Posta un pò la stringa :)

c'è già la stringa... quella è la connessione per MSSQL (localhost implica la connessione sulla macchina locale).

Ora non ricordo C#*l ho usato mesi e mesi fa però la sintassi era diversa per un DB Access (se usi Visual Studio puoi collegarlo tramite Wizard anche...)

RaouL_BennetH
03-08-2010, 13:01
c'è già la stringa... quella è la connessione per MSSQL (localhost implica la connessione sulla macchina locale).

Ora non ricordo C#*l ho usato mesi e mesi fa però la sintassi era diversa per un DB Access (se usi Visual Studio puoi collegarlo tramite Wizard anche...)

Si, infatti, intendevo quello, la stringa dovrebbe essere


"Provider=Microsoft.Jet.OLEDB.4.0;Data source=PercorsoAlTuoDatabase.mdb"

mto89
03-08-2010, 13:47
Giusto grazie della dritta, quindi detto in parole povere la connessione OLEdb è usata per i database in formato originario di Access, mentre SQLConnection per i tipi di database MySql? Che differenze sostanziali ci sono?

mto89
03-08-2010, 14:08
Ora ho scritto:

static void Main(string[] args)
{
OleDbConnectionStringBuilder bd = new OleDbConnectionStringBuilder();
bd.DataSource = "Northwind.mdb";
bd.Provider = "Provider=Microsoft.Jet.OLEDB.4.0";

OleDbConnection conn = new OleDbConnection(bd.ConnectionString);
try
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Products");
OleDbDataReader reader = cmd.ExecuteReader();

try
{
while (reader.Read())
{
....
....

e mi dà ancora errore sulla riga in rosso:
"The 'Provider=Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine."

In giro ho letto che può essere a causa dell'eseczione a 64 bit, ma il cpu target è x86, inoltre anche su una macchina con architettura e SO a 32 bit mi dà lo stesso errore, avete idea del perchè?

RaouL_BennetH
03-08-2010, 14:14
che reference hai linkate al progetto ?

Se non la hai già, credo ti serva solo aggiungere: System.Data

Edit:

e anche System.Data.Oledb;

dojolab
03-08-2010, 14:44
che reference hai linkate al progetto ?

Se non la hai già, credo ti serva solo aggiungere: System.Data

Edit:

e anche System.Data.Oledb;

Esatto ;)

mto89
03-08-2010, 16:09
No erano già presenti entrambi, ma anche su macchine diverse mi da stesso errore..
Voi scrivereste diversamente per accedere al database?

dojolab
03-08-2010, 16:27
No erano già presenti entrambi, ma anche su macchine diverse mi da stesso errore..
Voi scrivereste diversamente per accedere al database?

Io userei la guida dell'MSDN onestamente :D
Non so come sia, non la guardo da qualche mese ... (ma tanti mesi :P)

mto89
03-08-2010, 19:57
Non venendone a capo ho aggirato il problema usando il wizard di visual studio :)

mto89
05-08-2010, 09:53
Pensavo a chissà quali errori particolari invece si trattava solo del provider= che non ci va :muro: :
OleDbConnectionStringBuilder bd = new OleDbConnectionStringBuilder();
bd.DataSource = "Northwind.mdb";
bd.Provider = "Provider=Microsoft.Jet.OLEDB.4.0";