2012-01-19 46 views
14

Tôi đang thử nghiệm kết nối ứng dụng C# với cơ sở dữ liệu MDF lần đầu tiên và tôi cần một chút trợ giúp ..Làm cách nào để kết nối với tệp cơ sở dữ liệu MDF?

Tôi đã tạo một tệp cơ sở dữ liệu MDF nhỏ trong Visual Studio 2010, sau đó tạo một dự án khác và nhập tập tin vào chính dự án.

Tôi không cố gắng kết nối với tệp MDF qua mã. Dưới đây là đoạn code tôi đang sử dụng:

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"); 
     } 
    } 
} 

Khi tôi chạy các ứng dụng, tôi nhận được một ngoại lệ ở dòng mà tôi xác định chuỗi kết nối, và ngoại trừ có thông điệp này ở phía trên cùng của ngăn xếp:

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

Ai đó có thể chỉ cho tôi đúng hướng không?

+0

bài này có thể giúp: [? Làm thế nào để kết nối với một MDF (Microsoft SQL Server cơ sở dữ liệu tập tin) trong một dự án web đơn giản] [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

Trả lời

24

Thêm khoảng trống giữa Data Source

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

Và trong khi bạn đang chỉnh sửa, hãy xóa các dấu cách trong '; AttachDbFilename = ' –

+1

Đã thử nó, nhưng bây giờ tôi có ngoại lệ sau:' System.Data.SqlClient.SqlException (0x80131904): Một nỗ lực để đính kèm một cơ sở dữ liệu tự động đặt tên cho tệp SampleDatabase.mdf không thành công. Một cơ sở dữ liệu có cùng tên tồn tại hoặc không thể mở tệp được chỉ định hoặc nó nằm trên chia sẻ UNC.' – Ahmad

+1

Bạn cần chỉ định đường dẫn của sampleDatabase.mdf. Hãy xem bài đăng đã chỉnh sửa. – adatapost

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

Tôi đã thử phiên bản sửa đổi này "' "Server =. \\ SQLExpress; AttachDbFilename = SampleDatabase.mdf; Database = SampleDatabase; Trusted_Connection = Yes "', và có ngoại lệ sau: 'System.Data.SqlClient.SqlException (0x80131904): Đã xảy ra lỗi kích hoạt tệp. Tên tệp vật lý 'SampleDatabase.mdf' có thể không đúng. Chẩn đoán và sửa lỗi bổ sung và Không thể đính kèm tệp 'SampleDatabase.mdf' làm cơ sở dữ liệu '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); 

Các filepath nên có | DataDirectory | thực sự liên kết đến "thư mục dự án hiện tại \ App_Data \" hoặc "thư mục dự án hiện tại" và nhận tệp .mdf ..... Đặt .mdf ở một trong những địa điểm này và sẽ hoạt động trong studio hình ảnh 2010. Và khi bạn sử dụng ứng dụng độc lập trên hệ thống sản xuất, sau đó đường dẫn hiện tại nơi tệp thực thi là, phải có tệp .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"); 

tính năng này có hiệu quả đối với tôi ... Có cách nào để rút ngắn đường dẫn không? như

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

Tới Server Explorer> Cơ sở dữ liệu của bạn> Nhấp chuột phải> properties> ConnectionString và sao chép các chuỗi kết nối và quá khứ sao chép vào connectiongstring code :)

+0

Một trong những câu trả lời hay nhất mà tôi đã thấy cho đến thời điểm này :) –

3

Đối với Visual Studio 2015 chuỗi kết nối là:

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

Giải pháp thay thế, nơi bạn có thể có cơ sở dữ liệu trong thư mục bạn muốn bên trong giải pháp. Mà làm việc cho tôi:

.ConnectionString(@"Data Source=LocalDB)\MSSQLLocalDB; 
        AttachDbFilename="+AppDomain.CurrentDomain.BaseDirectory+"Folder1\\Folder2\\SampleDatabase.mdf" + "; 
        Integrated Security=True;") 
Các vấn đề liên quan