2013-03-01 83 views
3

嗨我試圖連接一個SQL服務器壓縮數據庫到我的程序,我想要一個按鈕,從數據庫中刪除所有條目,當我按下按鈕時,程序拋出異常並給出以下錯誤消息「建立與SQL Server的連接時發生網絡相關或實例特定的錯誤未找到服務器或無法訪問服務器驗證實例名稱是否正確以及SQL Server是否配置爲允許遠程連接。(提供商:SQL網絡接口,錯誤:26 - 錯誤定位服務器/實例指定)「將C#連接到SQL Server Compact數據庫

幫助請嗎? =]

對不起,代碼如下=]

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Data.SqlClient; 
using System.Data.SqlServerCe; 


namespace Booking_system_Final 
{ 
    public partial class PendingJobs : Form 
    { 
     SqlConnection sc = new SqlConnection("Data Source=C:\\Users\\Administrator\\My Documents\\BMS_Data.sdf"); 
     public PendingJobs() 
     { 
      InitializeComponent(); 
     } 

     private void PendingJobs_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the 'bMSDataSet.Bookings' table. You can move, or remove it, as needed. 
      this.bookingsTableAdapter.Fill(this.bMSDataSet.Bookings); 
      // TODO: This line of code loads data into the 'bMS_DataDataSet1.Bookings' table. You can move, or remove it, as needed. 


     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      sc.Open(); 
      SqlCommand cmd = new SqlCommand("DELETE FROM Bookings"); 
      cmd.Connection = sc; 
      cmd.ExecuteNonQuery(); 
      sc.Close(); 
      MessageBox.Show("Database Cleared"); 


     } 
    } 
} 
+3

那麼讓我們來看看一些代碼。另外,你可以在SQL Server Management Studio中打開它嗎? – Arran 2013-03-01 12:09:11

+0

您是否傳遞正確的憑據,指向正確的SQL Server實例和數據庫? – 2013-03-01 12:15:21

+0

我指向本地存儲的SQL服務器壓縮數據庫和目錄名稱正確 – 2013-03-01 12:17:54

回答

8

嘗試使用SqlCeConnection類,而不是SqlConnection

SqlCeConnection sqlConnection1 = new SqlCeConnection(); 
sqlConnection1.ConnectionString = "Data Source = C:\\Users\\Administrator\\My Documents\\BMS_Data.sdf;Persist Security Info=False"; 
+0

如何修改'LAN'的數據源?比方說,'.sdf'在共享網絡上位於'\\ xyz-PC \ db \ dbfile.sdf' – Zeeshan 2016-08-06 10:54:46

0

看一看這個博客文章:SQL SERVER – FIX : ERROR : (provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

這又一步一步地,你可能需要做什麼:

總之:

  1. SQL Server should be up and running.
  2. Enable TCP/IP in SQL Server Configuration
  3. Open Port in Windows Firewall
  4. Enable Remote Connection
  5. Enable SQL Server Browser Service
  6. Create exception of sqlbrowser.exe in Firewall
  7. Recreate Alias

關於在哪裏和什麼在每個步驟做,你將在文章中找到更深入的信息。您可能也想看看Connection strings for SQL Server Compact。在那裏你可以找到你可以嘗試使用的連接字符串的其他變體。

+0

感謝您的詳細答案,我發現問題的來源是SQL服務器出於某種原因無法連接,我現在得到一個錯誤,說「遠程過程調用失敗」 – 2013-03-01 13:16:31

+0

@ReeceCottam:我不完全熟悉這一點,是一個「遠程過程」,與「存儲過程」相同嗎?如果是這樣,那麼CE版本可能不支持以下功能:查看此功能對比表的底部:(比較SQL Server Compact,SQL Server Express 2012和LocalDB)[http:// erikej。 blogspot.de/2011/01/comparison-of-sql-server-compact-4-and.html]它說「存儲過程,視圖,觸發器:No_」 – 2013-03-01 14:42:27

+0

請參閱@ ErikEJ的答案... – blins 2013-03-01 14:49:00

4

如果要連接到SQL Server Compact,使用的SqlCeConnection,SqlCeCommand等添加到SQL Server精簡ADO.NET提供參考,System.Data.SqlServerCe.dll