8

web.configファイルに接続文字列が定義されている場合、SQLデータベースへの接続を作成するにはどうすればC#コード(申し訳ありません)ストアドプロシージャ。私は最終的には、このデータを何らかの方法でGridView用のデータソースとして使用したいと考えています。asp.netでストアドプロシージャを呼び出す

<connectionStrings> 
<add name="db.Name" connectionString="Data Source=db;Initial Catalog=dbCat;User ID=userId;Password=userPass;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

デシベルサーバーは、Microsoft SQLサーバーである:ここで

は、接続文字列は、web.configファイルで定義されている方法です。ここで

は私が探していたものです。

ConnectionStringSettings conSet = ConfigurationManager.ConnectionStrings["db.Name"]; 
SqlConnection con = new SqlConnection(conSet.ConnectionString); 

データを取得するためのコードはかなり簡単です。私はweb.configファイルのconnectionString変数からアクセスすることにもっと興味がありました。このような

+0

どのような種類のデータベースですか? – N0Alias

+1

vb.netまたはC#を使用していますか? (構文を手伝ってください)。 – JonH

答えて

6

からあなたが必要なすべてを見つけることができるはずです:CONNSTRINGがキーの名前である

private static readonly string connString = Resource1.connString;

。それはそうのようなweb.configファイル

何かがある場合:CONNは、あなたのWeb構成ファイルで定義されている

private static readonly string connString = System.Configuration.ConfigurationManager.AppSettings["strConn"];

<add key="strConn" value="User ID=test;Password=test;Initial Catalog=TestDB;Data Source=NameOfServer;"/> 

その後SPROCを呼び出す:あなたがC#でコーディングされている場合です

//connString = the string of our database app found in the resource file 
       using (SqlConnection con = new SqlConnection(connString)) 
       { 
        using (SqlCommand cmd = new SqlCommand("EMPDLL_selClientByClientID", con)) 
        { 
         cmd.CommandType = CommandType.StoredProcedure; 
         cmd.Parameters.Add("@ClientID", SqlDbType.VarChar).Value = cID; 
         con.Open(); 

         using (SqlDataReader reader = cmd.ExecuteReader()) 
         { 
          if (reader.HasRows) 
          { 
           if (reader.Read()) 
           { 
             //more code 
           } 
          } 
         } 
        } 
        } 

、VB.netをその同じ取引少しだけ、ここに小さなサンプルです:)よりwordier:

Public Sub DeleteEmployee(ByVal lVID As Long) 
     Dim conMyData As SqlConnection 
     Dim cmdDelete As SqlCommand 

     Try 
      conMyData = New SqlConnection(connString) 
      cmdDelete = New SqlCommand("delEmployee", conMyData) 

      With cmdDelete 
       .CommandType = CommandType.StoredProcedure 
       'add the parameters 
       .Parameters.Add("@LoginID", SqlDbType.BigInt).Value = lVID 'the request 
       conMyData.Open() 'open a connection 
       .ExecuteNonQuery() 'execute it 
      End With 

     Catch ex As Exception 
      Throw ex 
     Finally 
      cmdDelete = Nothing 
      conMyData.Close() 
      conMyData = Nothing 
     End Try 
    End Sub 

もちろん、try/catch/finallyの代わりにusingステートメントを使用して、使用中のリソースを確実にクリーンアップする必要があります。

+0

web.configにキーを追加したくない場合は(複数のweb.configファイルを編集する必要があります)、静的変数として入力する必要があります。私のポストのように私のweb.configで定義されている場合、接続文字列にアクセスすることは可能ですか? – onit

+0

@onitはウェブ設定ファイルの中にあります。 – JonH

+0

@onit - その特定のセクションだけが必要な場合は、 '_SQLDBConnString = System.Configuration.ConfigurationManager 'を実行できます。connectionStrings(1).ConnectionString() 'と' appsettings'セクションではなく、その後のconnectionStringsプロパティを使用します。 – JonH

3

何か...

using (var con = new SqlConnection(_connectionString)) 
{ 
    using (var cmd = new SqlCommand(_storedProcedureName, con)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@pMyParamater", myParamaterValue); 
     con.Open(); 

     using (var reader = cmd.ExecuteReader()) 
     { 
      while (reader.Read()) 
      { 
       // do something with the row 
      } 
     } 
    } 
} 

これは正直に言うと、すべての非常に単純なもので、それはそうのようなリソースファイルだ場合は、ADO.NET documentation

+1

あなたは 'var'なぜ型を知っているのですか? – JonH

+0

私はこれが複雑なものではないことを認識します。私は文字通り.NETプログラミングを始めたばかりなので、誰かが正しい方向に向かうことができるかどうか疑問に思っていました。 – onit

+2

@onitはい、私はそれが批判的なものではないことを認識しています。あなたが何か新しいものであれば、ドキュメントを最初の点として読んでいる習慣に入るのは良いことです。あなたがまだ立ち往生している場合は、次に、より具体的な質問をしてください。あなたはもっとその方法を学び、時々このサイトで与えられる悪いアドバイスのいくつかを避けるでしょう。 – fearofawhackplanet