2011-09-01 79 views
5

嗨我想知道我應該如何連接到C#,.NET中的外部SQL Server數據庫?.Net C#如何連接到外部SQL Server數據庫? OleDb或其他?

例如,如果我有沒有參數:

SQL信息

  • 的網址,獲取數據庫(整個瀏覽器也):Sqlweb.companyname.com
  • 數據庫用戶名:用戶名
  • Server:Dcms-xxx
  • Databasename:databaseName
  • Databasepassword:password

我知道如何連接到內部:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + System.AppDomain.CurrentDomain.BaseDirectory + "..\\Files\\MapPlaces\\Database.mdb;";

但對於外部?

我曾嘗試:

string nowConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Sqlweb.companyname.com;Initial Catalog = databaseName; User Id = Username; Password = Password;"; 

System.Data.OleDb.OleDbConnection dbcon = new System.Data.OleDb.OleDbConnection(nowConString); 

string sql = "SELECT * FROM XXXTable"; 

dbcon.Open(); 

System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, dbcon); 

System.Data.OleDb.OleDbDataReader reader; 

reader = cmd.ExecuteReader(); 

ScriptStuff.Append("Reader created!<br/>"); 

while (reader.Read()) 
{ 
    string companyName = reader.GetValue(1).ToString(); 

    ScriptStuff.Append(companyName+"<br/>"); 

} 

沒有工作!感謝您的幫助 !

從評論編輯:

是的,這是一個我的錯誤,謝謝。因爲第一個是訪問和是第二個是SQL Server。它是SQL Server 2005.但我是新來的.NET和所有的......我已經找到第一個和第二個在那connectionstring.com,但我找不到或不知道如何使用這個...

你能幫忙,只是張貼孔洞連接?謝謝 - Vilius 7分鐘前

我的意思是我還需要使用OleDB嗎?應該有「Provider = Microsoft.Jet.OLEDB.4.0;」在那個連接字符串?我在哪裏發佈什麼(服務器(即Dcms-xxx),或SQL服務器(sqlweb.companyname.com)的網址)?謝謝你的幫助 ! -

回答

1

我會添加一個connectionString到我的app/web.config。

<connectionStrings> 
    <add name="AspnetdbConnectionString" 
     connectionString="Data Source=<databaseadress>;Initial Catalog=<database>;User Id=<user>;Password=password>" 
     providerName="System.Data.SqlClient" 
    /> 
</connectionStrings> 

上面的例子是你如何指定一個MSSQL連接的ConnectionString的,和下面的方式來使用這個的ConnectionString。

using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AspnetdbconnectionString"].ConnectionString)) 
     { 
      cn.Open(); 
      using (SqlCommand cm = cn.CreateCommand()) 
      { 
       cm.CommandType = CommandType.Text; 
       cm.CommandText = "SELECT * FROM ..."; 
       using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader())) 
       { 
        while (dr.Read()) 
        { 
         // do stuff 
        } 
       } 
      } 
     } 
+0

非常感謝你會嘗試現在:);)數據庫地址女巫使用?服務器(即Dcms-xxx)或sql服務器的網址(sqlweb.companyname.com) – Vilius

+0

取決於它是否在本地網絡上。如果沒有使用完整的地址(sqlweb.companyname.com)。 – tskulbru

+1

這樣服務器(即Dcms-xxx)連接時根本不使用?它不在本地網絡上(我認爲:)) – Vilius

0

你確定它是一個SQL Server數據庫,你試圖連接到?
你的「內部」例如連接到Microsoft Access數據庫(OLEDB提供程序和數據庫文件的擴展名.mdb)中

如果外部數據庫確實是一個SQL Server數據庫,推薦的方式是使用SqlConnectionSqlDataReader等代替OleDbConnection
或者,如果你真的想使用OleDb,你需要一個不同的連接字符串。
請參閱connectionstrings.com(對於SQL Server 200820052000,取決於您嘗試連接的內容)。

+0

是的,這是我的錯,謝謝。由於第一個是訪問和是第二個是SQL。這是2005年的SQL。但我對.net和所有這些都是陌生的...我已經在connectionstring.com中找到了第一個和第二個,但我找不到或理解如何使用這個...你能幫忙嗎,只是發佈孔連接?謝謝 – Vilius

+0

我的意思是我仍然需要使用OleDB?應該有「Provider = Microsoft.Jet.OLEDB.4.0;」在那個連接字符串?我在哪裏發佈什麼(服務器(即Dcms-xxx),或SQL服務器(sqlweb.companyname.com)的網址)?謝謝你的幫助 ! – Vilius

0

我會強烈建議考慮看看:

http://www.connectionstrings.com/

這是一個快速的,「在你的臉」治療爲所有主要的數據庫連接字符串的主題。