2012-01-19 101 views
14

Estoy experimentando conectando una aplicación C# a una base de datos MDF por primera vez, y necesito un poco de ayuda ...¿Cómo me conecto a un archivo de base de datos MDF?

Hice un pequeño archivo de base de datos MDF en Visual Studio 2010, luego creé otro proyecto e importé el archivo en el proyecto en sí.

No estoy intentando conectarme al archivo MDF mediante el código. Aquí el código que estoy usando:

namespace DBtestApp1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     System.Data.SqlClient.SqlConnection con; 
     private void Form1_Load(object sender, EventArgs e) 
     { 
      con = new System.Data.SqlClient.SqlConnection(); 
      con.ConnectionString = "DataSource=.\\SQLEXPRESS; AttachDbFilename =SampleDatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 
      con.Open(); 
      MessageBox.Show("Connection opened"); 
      con.Close(); 
      MessageBox.Show("Connection closed"); 
     } 
    } 
} 

Cuando ejecuto la aplicación, me sale una excepción en la línea en la que defino la cadena de conexión, y la excepción tiene este mensaje en la parte superior de la pila:

System.ArgumentException: Keyword not supported: 'datasource'. 

¿Puede alguien señalarme en la dirección correcta?

+0

este post podría ayudar: [? ¿Cómo se conecta a un .mdf (base de datos de archivos de Microsoft SQL Server) en un proyecto web sencilla] [1] Cheerz [1]: http://stackoverflow.com/questions/173209/how-do-i-connect-to-an-mdf-microsoft-sql-server-database-file-in-a-simple -web – Helikaon

Respuesta

24

Agregar espacio entre Data Source

con.ConnectionString = @"Data Source=.\SQLEXPRESS; 
          AttachDbFilename=c:\folder\SampleDatabase.mdf; 
          Integrated Security=True; 
          Connect Timeout=30; 
          User Instance=True"; 
+1

Y mientras edita, elimine los espacios en '; AttachDbFilename = ' –

+1

Lo intenté, pero ahora recibí la siguiente excepción:' System.Data.SqlClient.SqlException (0x80131904): Falló la tentativa de adjuntar una base de datos nombrada automáticamente para el archivo SampleDatabase.mdf. Existe una base de datos con el mismo nombre, o el archivo especificado no se puede abrir, o se encuentra en UNC share. – Ahmad

+1

Debe especificar la ruta de sampleDatabase.mdf. Eche un vistazo a la publicación editada. – adatapost

1
Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes; 
+0

Intenté esta versión modificada "' "Server =. \\ SQLExpress; AttachDbFilename = SampleDatabase.mdf; Database = SampleDatabase; Trusted_Connection = Yes "', y obtuvo la siguiente excepción: 'System.Data.SqlClient.SqlException (0x80131904): Se produjo un error de activación de archivo. El nombre físico del archivo 'SampleDatabase.mdf' puede ser incorrecto. Diagnosticar y corregir errores adicionales, y vuelva a intentar la operación. No se puede adjuntar el archivo 'SampleDatabase.mdf' como base de datos 'SampleDatabase'. – Ahmad

9
string sqlCon = @"Data Source=.\SQLEXPRESS;" + 
       @"AttachDbFilename=|DataDirectory|\SampleDB.mdf; 
       Integrated Security=True; 
       Connect Timeout=30; 
       User Instance=True"; 
SqlConnection Con = new SqlConnection(sqlCon); 

La ruta de archivo debe tener | DataDirectory | que realmente enlaza con "directorio de proyecto actual \ App_Data \" o "directorio de proyecto actual" y obtiene el archivo .mdf ..... Coloque el archivo .mdf en cualquiera de estos lugares y debería funcionar en Visual Studio 2010. Y cuando use la aplicación independiente en el sistema de producción, luego la ruta actual donde está el archivo ejecutable, debe tener el archivo .mdf.

0
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Samples\MyApp\C#\bin\Debug\Login.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 

esto funciona para mí ... ¿Hay alguna manera de abreviar la ruta? como

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=\bin\Debug\Login.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 
4

vaya al Explorador de servidor> Su base de datos> clic derecho> propiedades> ConnectionString y copiar la cadena de conexión y más allá de la copian en connectiongstring código :)

+0

Una de las mejores respuestas que he visto hasta ahora :) –

3

Para Visual Studio 2015, la cadena de conexión es:

"Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|Database1.mdf;Integrated Security=True" 
0

Solución alternativa, donde puede tener la base de datos en la carpeta que desea dentro de la solución. Eso funcionó para mí:

.ConnectionString(@"Data Source=LocalDB)\MSSQLLocalDB; 
        AttachDbFilename="+AppDomain.CurrentDomain.BaseDirectory+"Folder1\\Folder2\\SampleDatabase.mdf" + "; 
        Integrated Security=True;") 
Cuestiones relacionadas