2011-01-20 165 views
1

我一直在其他網站嘗試和搜索數千次,但從來沒有找到一個示例或簡單的代碼來使用。TCP/IP連接

我創建它使用ODBC連接,我也安裝了MS SQL和配置爲啓用遠程數據庫信息共享的應用程序C#。我想使我的數據庫可用於每個人使用我通過使用連接所做的這個應用程序。

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; 

namespace CaseMatter 
{ 

public partial class mainLog : Form 
{ 
    string userID, userName, userAddress, userFName, userLastName, userCity, userPassword, userTele; 
    public mainLog() 
    { 
     InitializeComponent(); 
     this.Size = new Size(442, 162); 

    } 


    private void Submitbtn_Click(object sender, EventArgs e) 
    { 

      string ConnectionString = 
       "Data Source=xx.xx.xx.xx,1433;Initial Catalog=master;Integrated Security=SSPI;"; 

      var conn = new SqlConnection(ConnectionString); 
      conn.Open(); 

      var strSQLCommand = "SELECT Name FROM example WHERE id='1'"; 
      var command = new SqlCommand(strSQLCommand, conn); 
      var reader = command.ExecuteReader(); 

      while (reader.Read()) 
      { 
       passwordBox.Text = reader.GetString(0); 
      } 

      reader.Close(); 
      conn.Close(); 

    } 
} 

}

我剛纔編輯的代碼,試了一下,我添加了一個嘗試catch來處理SQL異常,但是當我點擊提交按鈕,它仍然凍結。

希望有人知道這一點。 錯誤: 「與SQL Server建立連接時發生網絡相關或實例特定錯誤未找到服務器或無法訪問服務器驗證實例名稱是否正確,並且SQL Server配置爲允許遠程連接(provider:TCP提供程序,error:0 - 無連接可以作出,因爲目標機器積極地拒絕它。)」

+1

請發佈您收到的確切例外。看起來可能是一個安全問題,因爲你沒有指定登錄憑證。 – 2011-01-20 17:12:37

+0

在編譯該項目之前我沒有收到任何錯誤或者這樣的問題,但是在編譯之後,框架凍結了 – Ivan 2011-01-20 17:15:47

+1

目前還不清楚發生了什麼問題。你得到一個例外,不好的數據等... – JaredPar 2011-01-20 17:16:05

回答

1

在你的榜樣,你都沒有通過用戶ID和密碼。那是因爲你不想包括你的憑證?我認爲不是因爲你正確地XXX出你的IP地址。我將首先提供可以訪問數據庫的SQL服務器帳戶的憑據。

0

我注意到您使用SqlConnection這不是一個ODBC連接對象。用SqlConnection實際上你是通過ADO.NET連接的。爲SqlConnection(ODBC和ADO.NET兩者)的連接字符串語法可在以下網站上找到:

http://connectionstrings.com

順便說一句,如果你連接到SQL 2005,連接字符串會是什麼樣子這個:

using System.Data.SqlClient; 

// trusted connection (SQL configured to use your windows ID) 
string ConnectionString = 
    "Data Source=xxxxxxx;Initial Catalog=xxxxxx;Integrated Security=SSPI;" 

// sql authentication (SQL manages its own users/pwds) 
//string ConnectionString = 
    //"Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;" 

var conn = new SqlConnection(ConnectionString); 
conn.Open(); 

var strSQLCommand = "SELECT Name from [example_autoincrement] where id='1'";  
var command = new SqlCommand(strSQLCommand, conn); 
var reader = command.ExecuteReader(); 

while (reader.Read()) 
{ 
    passwordBox.Text = reader.GetString(0); 
} 

reader.Close(); 
conn.Close(); 
0

好吧,這是一個奇怪的檢查,但只是確保客戶端和服務器上的時間和日期是準確的。 SSPI需要每個間隔5分鐘的最大差距

2

我懷疑這裏有四件事情中的一件發生在這裏。

  1. SQL Server配置錯誤,未響應tcp連接。解決此問題的最簡單方法是使用SQL Management Studio進行連接。如果你不能以這種方式連接,那麼你必須看看sql服務器的服務設置。另外,請確保SQL瀏覽器服務正在服務器上運行。

  2. 的SQL Server配置爲使用不同的TCP端口比你想的人。從連接字符串中刪除「,1433」,然後重試。 SQL瀏覽器應該回應sql server正在偵聽的實際端口。

  3. SQL Server有防火牆阻止遠程連接。暫時關閉防火牆並查看是否可以連接。如果可以,請正確配置防火牆並重新打開。

  4. 本機上有某種類型的防火牆阻止該端口上的傳出連接。嘗試關掉你的看看是否有幫助。如果有,請正確配置並重新打開。


如果是這樣,沒有人遠程連接到一個全新的SQL Server那麼它很可能SQL服務器或Windows配置的配置中是完全。