2013-04-09 10 views
0

У меня есть файл .mdf. Я хочу использовать его в C# в настольном приложении.Использовать файл .MDF в C#

Это моя строка соединения:

string cwd = System.IO.Directory.GetCurrentDirectory(); 
string ConString = @"Data Source=.\SQLEXPRESS; AttachDbFilename=" + cwd + "\\SalaryProgram.mdf;Integrated Security=True;User Instance=True"; 

Как я могу использовать .mdf файл в C#?

Я получаю эту ошибку:

An attempt to attach an auto-named database for file D:\Naresh Backup\SalaryProgram\Latest Work\SalaryProgram\SalaryProgram\bin\Debug\SalaryProgram.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.

Спасибо заранее.

+1

В сообщении, кажется, довольно ясно: база данных ** из того же названия * * уже существует - у вас не может быть двух баз данных с одинаковым именем в экземпляре SQL Server Express ... –

+0

У меня нет БД с тем же именем на моем локальном компьютере. Раньше я использовал БД из другого ПК (Shared), теперь я хочу использовать этот файл mdf в своем локальном. – Naresh

ответ

1

Проверьте следующие 3 вещи:

  1. Убедитесь, что файл ваш MDF был создан одним и тем же или более ранней версии SQL Server, чем тот, который установлен на целевой машине.

  2. Убедитесь, что SQL Server на целевой машине еще не имеет базы данных с тем же именем.

  3. Всегда предпочитайте Path.Combine() по прямой конкатенации пути к папке и имени файла. Иногда функция возвращает конец символа обратной косой черты как часть пути, в других случаях это не так. Таким образом, прямая конкатенация может привести к незаконным путям.

  4. Возможно, вы захотите заглянуть в функцию |DataDirectory| тоже, intsead of GetCurrentDirectory().

+0

Итак, я должен положить файл mdf в эту папку: C: \ Program Files \ Microsoft SQL Server \ MSSQL10.SQLEXPRESS \ MSSQL \ DATA? Или я могу положить его в папку проекта? – Naresh

+0

Вы можете поместить его куда угодно. Макрос DataDirectory можно настроить программно, чтобы указать на любую нужную папку. Ссылка, приведенная выше, содержит больше информации об этом. – dotNET

+0

строка ConString = @ "Источник данных =.\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ SalaryProgram.mdf; Integrated Security = True, User Instance = True "; Теперь это моя строка подключения. У меня получилась следующая ошибка: попытка вложить базу с автоименованием для файла D: \ Naresh Backup \ SalaryProgram \ Latest Work \ SalaryProgram \ SalaryProgram \ bin \ Debug \ SalaryProgram.mdf не удалось. База данных с тем же именем существует или указанный файл не может быть открыт или находится на общем ресурсе UNC. – Naresh

0

В одном из моих предыдущих проектов (приложение winform на C#) я использовал БД «EmployeeMaster».

Строка соединения, которая работала для меня было:

"Источник данных = (локальная) \ SQLExpress; Initial Catalog = EmployeeMaster; Trusted_Connection = Да;"

Дайте ему попробовать.

+0

ОК. но я не хочу создавать БД на своем локальном компьютере. Я просто хочу использовать существующий файл mdf. Является ли это возможным ? – Naresh

0

Я действительно рекомендую вам регулярно прикреплять этот файл MDF к локальному экземпляру, а затем подключаться к базе данных. Присоединение файлов mdf в приложениях asp.net на самом деле не самый лучший способ для этого.

Просто добавьте строку подключения в файл конфигурации Aplication

<connectionStrings> 
      <add name="yourConnectionString" connectionString= 
"Data Source=(local); Initial Catalog=database_name;Integrated Security=True"  
providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

Затем используйте его в коде, как это:

string ConString = ConfigurationManager.ConnectionStrings["yourConnectionString 
"].ConnectionString 
Смежные вопросы