CLR: .Net / Mono / Boo / Otros CLR > C#
Conectar a una BD interna c# - no hay forma...
nax:
Bueno, no hace mucho que empecé con c# y mi mayor rompe cabezas son las conexiones a BD..
Estoy usando una BD creada desde el propio visual studio 2010 llamada premium.sdf (se ve en el explorador de servidores en "conexiones de datos")
De esa BD uso un par de dataset sin problemas...
MI problema viene cuando intento hacer una conexión por medio de código... ya que siempre me la rechaza... he probado muchisimas formas y nada...
todas fallan en el conexion.Open(); y el error dice que no puede encontrar la bd.
El actual código que estoy probando es:
--- Código: C# --- string miCadenaconexion = ConfigurationManager.ConnectionStrings[1].ConnectionString; MessageBox.Show(ConfigurationManager.ConnectionStrings[1].ConnectionString); SqlConnection sqlconnection; using (sqlconnection = new SqlConnection(miCadenaconexion)) { sqlconnection.Open(); if (sqlconnection.State == System.Data.ConnectionState.Open) { MessageBox.Show("abieta"); } sqlconnection.Close(); } if (sqlconnection.State != System.Data.ConnectionState.Open) { MessageBox.Show("closeed"); }
el messagebox muestra: Data Source=|DataDirectory|premium.sdf
era básicamente para ver que estaba usando la Connectionstring correcta...
el app.config es:
--- Código: XML ---<?xml version="1.0" encoding="utf-8" ?><configuration> <configSections> </configSections> <connectionStrings> <add name="WindowsFormsApplication1.Properties.Settings.Database1ConnectionString" connectionString="Data Source=|DataDirectory|premium.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" /> </connectionStrings></configuration> Nota: no me digais que tengo que usar ConnectionString[0] porque esa es un mdf o mdb que no se ni de donde sale :S
El error que me da es este:
--- Citar ---Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: SQL Network Interfaces, error: 26 - Error al buscar el servidor o instancia especificado)
--- Fin de la cita ---
en sqlconnection.Open();
a ver si me podeis orientar un poco ya que ando muy perdido a estas alturas!
desde ya miles de gracias
Altrox:
Buenas,
para conectar con sqlserver personalmente utilizo oledbconection, te dejo un ejemplo de cómo lo hago.
--- Código: C# --- string conex = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=db/base.sdf;";string[] conf = new string[2];OleDbConnection conn = new OleDbConnection(conex);conn.Open();string sql = "SELECT * FROM Configuracion";OleDbCommand ejecucion = new OleDbCommand(sql, conn);//Para Obtener DatosOleDbDataReader leer = ejecucion.ExecuteReader(); while (leer.Read()) { conf[0] = leer["Campo1"].ToString(); conf[1] = leer["Campo3"].ToString(); }// FIN Para Obtener Datos // Para añadir, actualizar borrar datos sql = "INSERT INTO Configuracion (campo1,campo2) VALUES ('valorCampo1','ValorCampo2')"; ejecucion.ExecuteNonQuery(); // FIN Para añadir, actualizar borrar datos conn.Close(); Por último decir que, para insertar un valor de una variable(ya que estuve media hora dándome cabezazos como un tonto).
--- Código: C# --- string v = "hola";string sql = "INSERT INTO Configuracion (campo1) VALUES ('" + v + "')";
Bueno espero que te sirva de algo.
Saludos!
nax:
Muchísimas gracias Altrox!! con oledb no tengo problema :D
EDito:
En los selects funcioan perfectamente..
el insert me falla :(
--- Código: C# --- string conex = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=|DataDirectory|\premium.sdf;"; string sql = "INSERT INTO usuario (usuario, pass) VALUES ('" + user + "', '" + pass + "')"; OleDbConnection conn = new OleDbConnection(conex); conn.Open(); OleDbCommand ejecucion = new OleDbCommand(sql, conn); ejecucion.ExecuteNonQuery(); conn.Close();
no da error, simplemente voy a mirar la bd desde el explorador y no aparecen los nuevos registros :no:
Altrox:
Que raro, bueno luego te dejo un pequeño ejemplo que tengo, que ahora no tengo tiempo, ok?
Saludos!
gabio2:
Pon un punto de interrupción.. donde empieza tu método.. y ejecuta paso a paso.. Obten la sentencia SQL, ejecutala en tu SQL MANAGENT o como se llame.. y ve si funca.. si no funca.. es problema de tu sentencia SQL , SI funca es problema de programación saludos.! :)
Navegación
[#] Página Siguiente
Ir a la versión completa