ASP.NET'te SQL SERVER'a bağlantı dizesini ayarlama


Yanıtlar:


149

Bunu da kullanabilirsiniz, daha basit. Ayarlamanız gereken tek şey "Veri TabanınızınAdı" dır.

  <connectionStrings>
    <add name="ConnStringDb1" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
  </connectionStrings>

Bağlantı dizesi nereye yerleştirilir

<?xml version='1.0' encoding='utf-8'?>  
  <configuration>  
    <connectionStrings>  
      <clear />  
      <add name="Name"   
       providerName="System.Data.ProviderName"   
       connectionString="Valid Connection String;" />  
    </connectionStrings>  
  </configuration>  

Bir sorgu yürütmek istediğimde, arkamdaki C # kodumda nasıl kullanılır
Nikhil Tamhankar

1
Dot
net'teki

4
Bu satırı kaç kişinin kopyalayıp yapıştırdığını merak ediyorum ... :-) Sanırım bu soruya 30. kez geliyorum .... belki de ezbere öğrenmeliyim.
Ayo Adesina

Bu sürümde kullanıcı adı / şifre öznitelikleri eksik.
Burgi

@Burgi Hayır, eksik değil (bakın Integrated Security=True?), Veritabanı dosyayı izinlerine göre okuduğu için gerekli değil - deneyin. Bunun daha basit olduğunu söylememin nedeni bu, çünkü onları eklemenize gerek yok. Kullanmayı başaramazsanız, veritabanınızı açın ve orada, veritabanında ve dosyalarda doğru izni ayarlayın
Aristos

107

Nedense burada basit cevabı göremiyorum.

Bunu kodunuzun en üstüne koyun:

using System.Web.Configuration;
using System.Data.SqlClient; 

Bunu Web.Config'e koyun:

<connectionStrings >
    <add
         name="myConnectionString" 
         connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;"
         providerName="System.Data.SqlClient"/>
</connectionStrings>

ve bağlantı değişkenini kurmak istediğiniz yer:

SqlConnection con = new SqlConnection(
    WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString);

5
WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionStringteknik olarak daha doğru olabilir.
ezmek

2
Ben de gerekli:using System.Data.SqlClient;
nu everest

22

Bunu yanıtlamayı çok zor buldum ama sonunda anladım. Bu yüzden aşağıdaki adımları yazacağım.

  1. Bağlantı dizenizi kodda ayarlamadan önce, veritabanınıza gerçekten erişebildiğinizden emin olun. Kullanmak istediğiniz her türlü ayrıntıyı kullanarak erişime sahip olduğunuzdan emin olmak için yerel olarak SSMS (Sql Server Management Studio veya diğer veritabanlarındaki eşdeğeri) kullanarak veritabanı sunucusunda oturum açarak başlayın.

  2. Ardından (gerekirse), veritabanına ayrı bir sunucu üzerinden erişmeye çalışıyorsanız, SSMS'de de aynı şeyi yapabileceğinizden emin olun. Bu nedenle, bir bilgisayarda SSMS'yi kurun ve sunucuya bu veritabanı sunucusunun kullanıcı adı ve parolasıyla erişebildiğinizden emin olun.

Yukarıdaki 2'yi doğru anlamazsanız, veritabanına erişemediğiniz için zamanınızı boşa harcarsınız. Bunun nedeni, kurduğunuz kullanıcının yanlış olması, uzaktan erişimin etkin olmaması (gerekirse) veya bağlantı noktalarının açılmaması (gerekirse) olabilir, ancak bunlar en yaygın olanıdır.

Veritabanına SSMS kullanarak erişebileceğinizi doğruladıktan sonra. Sırf süreci otomatikleştirmek ve hatalardan kaçınmak için bir sonraki adım, sistemin işi sizin yerinize yapmasına izin vermektir.

  1. Boş bir proje başlatın, Linq seçiminizi SQL'e veya Veri Kümesine ekleyin (EF iyidir, ancak bağlantı dizesi bir EF con dizesinin içine gömülüdür, temiz bir tane istiyorum) ve yukarıda doğrulanan ayrıntıları kullanarak veritabanınıza bağlanın. dolandırıcılık sihirbazı. Herhangi bir tablo ekleyin ve dosyayı kaydedin.

Şimdi web yapılandırmasına gidin ve sihirli bir şekilde, ihtiyacınız olan tüm ayrıntılarla birlikte güzel ve temiz çalışan bağlantı dizesini göreceksiniz.


{Aşağıda eski bir gönderinin bir parçası vardı, bu yüzden bunu görmezden gelebilirsiniz, veritabanına yalnızca arkadaki koddan erişmenin en basit yolu olarak onu referans olarak bırakıyorum. Lütfen aşağı kaydırın ve aşağıdaki 2. adımdan devam edin. }

Yukarıdaki adımların, arkasındaki kodda bağlantı dizeniz olarak aşağıdakine benzer bir şeyle sizi başlattığını varsayalım:

string conString = "Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;";

Bu adım çok önemlidir. Aşağıdaki adımları uygulamadan önce, yukarıdaki bağlantı dizesi biçiminin çalıştığından emin olun. Bir bağlantı dizesi yapmanın en basit yolu bu olduğundan, verilerinize bir tablodan bazı verileri etiketler veya metin satırları veya her neyse görüntüleyen bir tür sql komut metni kullanarak erişebildiğinizden emin olun.

Yukarıdaki stilin çalıştığından emin olduktan sonra, şimdi sonraki adımları atmanın zamanı geldi:

1. Dize değişmezinizi (tırnaklar dahil , tırnaklardaki şeyler ) web.config dosyasının aşağıdaki bölümüne aktarın (birden çok bağlantı dizesi için, birden çok satır yapın:

<configuration>
    <connectionStrings>
        <add name="conString" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
        <add name="conString2" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
        <add name="conString3" connectionString="Data Source=localhost;Initial Catalog=YourDataBaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

{Yukarıdakiler eski bir gönderinin parçasıydı, ilk 3 adımı uyguladıktan sonra tüm bu işlem sizin için yapılacaktır, böylece onu görmezden gelebilirsiniz. Sadece kendi referansım için buraya bırakıyorum. }


2. Şimdi aşağıdaki kod satırını arkadaki C # koduna, tercihen sınıf tanımının hemen altına ekleyin (yani bir yöntemin içine değil). Bu, projenizin kök klasörüne işaret eder. Esasen proje adıdır. Bu genellikle web.config dosyasının konumudur (bu durumda projeme MyProject denir.

static Configuration rootWebConfig = WebConfigurationManager.OpenWebConfiguration("/MyProject");

3. Şimdi aşağıdaki kod satırını arkadaki C # koduna ekleyin. Bu, farklı yöntemlerde bir yapılandırmaya ihtiyacınız olursa, kodunuz boyunca birçok yerde başvurabileceğiniz bir dize sabiti oluşturur.

const string CONSTRINGNAME = "conString";

4. Ardından aşağıdaki kod satırını arkadaki C # koduna ekleyin. Bu, bağlantı dizesini web.config dosyasından conString adıyla alır (yukarıdaki sabitten)

ConnectionStringSettings conString = rootWebConfig.ConnectionStrings.ConnectionStrings[CONSTRINGNAME];

5. Son olarak, başlangıçta bu kod satırına benzer bir şeye sahip olacağınız yerde:

SqlConnection con = new SqlConnection(conString)

bu kod satırıyla değiştireceksiniz:

SqlConnection con = new SqlConnection(conString.ConnectionString)

Bu 5 adımı uyguladıktan sonra kodunuz daha önce olduğu gibi çalışmalıdır. İlk önce yorumlamayı orijinal biçiminde test etme nedeninizi anlayın, böylece bağlantı dizesiyle ilgili bir sorun mu yoksa kodla ilgili bir sorun mu olduğunu bilirsiniz.

C #, ASP.Net ve Sql Sunucusunda yeniyim. Bu yüzden, bu kodu yapmanın daha iyi bir yolu olması gerektiğinden eminim. Mümkünse bu adımların nasıl iyileştirilebileceğine dair geri bildirimlerimi de takdir ediyorum. Her yerde böyle bir şey aradım ama haftalarca süren sıkı çalışmalardan sonra sonunda anladım. Kendim baktığımda, hala daha kolay bir yol olması gerektiğini düşünüyorum.

Umarım bu yardımcı olur.


14

<configuration>düğüm içinde olmalıdır :

  <connectionStrings >
    <add name="myconnectionstring" connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

bu sitede daha fazla bilgi var:


1
Asp.net 4'te bir sorgu yürütmek istediğimde C #
kodumda

7

WebConfig konsolunda bağlantı

Bağlantı dizenizi dosyadaki <connectionStrings>öğeye ekleyin Web.config.

<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=192.168.1.25;Initial Catalog=Login;Persist Security Info=True;User ID=sa;Password=example.com"   providerName="System.Data.SqlClient" />
</connectionStrings>

Class.Cs'de

public static string ConnectionString{
get{
return ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;}
set{}

6

başlıkta

using System.Configuration;

kodda

SqlConnection conn = new SqlConnection(*ConfigurationManager.ConnectionStrings["connstrname"].ConnectionString*);

3

Bağlantı dizeleri bölümünü belirtmek için harici yapılandırma dosyasını da kullanabilir ve bu dosyaya aşağıdaki gibi uygulama yapılandırma dosyasında başvurabilirsiniz. web.config

Olduğu gibi web.configdosyanın:

<configuration>  
    <connectionStrings configSource="connections.config"/>  
</configuration>  

Harici yapılandırma connections.configdosyası bağlantılar bölümünü içerecektir

<connectionStrings>  
  <add name="Name"   
   providerName="System.Data.ProviderName"   
   connectionString="Valid Connection String;" />  

</connectionStrings>  

Harici yapılandırma dosyasının içeriğini değiştirmek, uygulamayı yeniden başlatmaz (ASP.net'in varsayılan olarak uygulama yapılandırma dosyalarında herhangi bir değişiklikle yaptığı gibi)


2

Web.config dosyasında bağlantı dizesi yazmak istiyorsanız, verilen satırın altına yazın

<connectionStrings>
  <add name="Conn" connectionString="Data Source=192.168.1.25;Initial Catalog=Login;Persist Security Info=True;User ID=sa;Password=example.com"
   providerName="System.Data.SqlClient" />
 </connectionStrings>

VEYA

aspx.cs dosyasındasın

SqlConnection conn = new SqlConnection("Data Source=12.16.1.25;Initial Catalog=Login;Persist Security Info=True;User ID=sa;Password=example.com");

2

Bunu web.configdosyanıza koyabilirsiniz connectionStrings:

<add name="myConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;" providerName="System.Data.SqlClient"/>

2

Aşağıdaki biçimi kullanabilirsiniz:

  <connectionStrings>
    <add name="ConStringBDName" connectionString="Data Source=serverpath;Initial Catalog=YourDataBaseName;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
  </connectionStrings>

Büyük olasılıkla web.config dosyasındaki bağlantı dizesi etiketini <appSettings>

Bunu dene.


1

Bunu deneyebilirsin. O çok basit

<connectionStrings>         
    <add name="conString" connectionString="Data Source=SQLServerAddress;Initial Catalog=YourDatabaseName; User Id=SQLServerLoginId; Password=SQLServerPassword"/>
</connectionStrings>

OP "web.config içinde nerede" diye sordu.
Steve Smith

0

Bunu bağlantı dizeniz için deneyin.

 Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;
 User ID=myDomain\myUsername;Password=myPassword;

Stack Overflow'a hoş geldiniz! Eski bir sorunun cevabını gönderirken, cevabınızın neden eski sorulardan daha iyi olduğu konusunda biraz bağlam eklemek iyidir. Aksi takdirde, cevaplar listesinin en altında gözden kaçma riski vardır.
Monolo

0

BEN SADECE BULUNDUM !! Bu dizi bağlantısını kurmanız ve doğrudan veritabanınıza işaret etmeniz gerekir . Sunucuda aynı durum.

"Provider=Microsoft.ACE.OLEDB.12.0; 
 Data Source=c:/inetpub/wwwroot/TEST/data/data.mdb;"

İşe yarıyor!! :)



-1

Adlı bir bölüm oluşturma <connectionStrings></connectionStrings>sizin de web.configiçeriden <configuration></configuration>daha sonra örneğin, kendisine farklı bağlantı dizeleri eklemek

<configuration>

  <connectionStrings>
   <add name="ConnectionStringName" providerName="System.Data.SqlClient" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True"/>
  </connectionStrings>

</configuration>

İşte tüm farklı bağlantı dizesi biçimlerinin bir listesi https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx


"Web.config'inizde <connectionStrings> </connectionStrings> adlı bir bölüm oluşturun" - web.config'in neresinde?
Steve Smith

"Yapılandırma" etiketinin alt öğesi
Guy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.