11
votes

"An attempt to attach an auto-named database for file C:\Users\John\documents\visual studio 2010\Projects\PAS\PAS\bin\Debug//PatAddSys.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share."

What's wrong here? I have the correct code for my path ( I think) but still this error occurs here is my database path

private string dbPath = Application.StartupPath + "//PatAddSys.mdf";

Here's the location of My Database

enter image description here

7
move the file into debug folder and then use that location. it worked for me.Zaid Abbasi

7 Answers

12
votes

Try setting the User Instance property in your connection string to true. You need to add this to your connection string:

User Instance=True

Also just to be sure check again your database server as it might already contain a database with the same name.

Hope that helps.

3
votes

Change both the current working directory and the connection string to the correct ones to solve it.

Select the database which is located in "Server explorer" then copy the connection string as exactly seeing in its properties, then use it in the codes.

enter image description here

then for the current working directory use the same path without the database's name. Solution -> properties -> debug is where the current working directory path is located at. This works for visual studio 2015.

I use my connection string as this

Private constr As String = "Data Source = (LocalDB)\MSSQLLocalDB;AttachDbFilename=" +
        Directory.GetCurrentDirectory() + "\DBNAME.mdf;" +
        "Integrated Security=True;Connect Timeout=30;User Instance=False"
1
votes

i think it might be very very late BUT

this string give me the above error

<add name="MAB_ERP_2_0.Properties.Settings.MyConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=Database\MabErp2.mdf;Integrated Security=true;"
        providerName="System.Data.SqlClient" />

But if add |Data Directory| before database name then it work fine

<add name="MAB_ERP_2_0.Properties.Settings.MyConnection" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database\MabErp2.mdf;Integrated Security=true;"
        providerName="System.Data.SqlClient" />
0
votes

FOR FUTURE HELP !!

you've corrected it:

private string dbPath = Application.StartupPath + "//PatAddSys.mdf";

BUT just have to do one step is to use the Backslash " \ " instead of SLASH " / " so it should to be like this :

private string dbPath = Application.StartupPath + "\\PatAddSys.mdf";

&thanks this line saved me alot of work :)

0
votes

Actually I've crashed to this problem but I handled it easily. if your connection string is

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

you need to make your own localDB. first go to command prompt than write

sqllocaldb create MyDatabase

than start your database

sqllocaldb start MyDatabase

than return to VS and change your connection string to

connectionString="Data Source=(LocalDB)\MyDatabase;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;"
0
votes

This is how I define my ConnectionString (not in any config files, just directly in my class):

_path = $@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={_installPath}\Database\EmployeeDB.mdf;Integrated Security=True";

But for some reason when I assign this to _installPath:

private readonly string _installPath = AppDomain.CurrentDomain.BaseDirectory;

I receive this error:

system.data.sqlclient.sqlexception (0x80131904) an attempt to attach an auto-name database for file EmployeeDB.mdf has failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share. Error number: 15350, state:1, class:14


When I changed _installPath to:

private readonly string _installPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

It doesn't give me errors anymore.

-3
votes

Use this:

Path.GetFullPath(yourpath_string)

it will work