2013-03-08 23 views
5

私はMicrosoft Visual Studio DALを使って、ItemDetailsのテーブルからデータを取得してリストされたアイテムのレビューを表示するためにデータを取得/更新する従来の方法を行っています。 ItemDetails.aspxファイルを作成するためのウェブサイトデータベース。私はDropDownList Controlを追加して、そのカテゴリー内のすべてのアイテムを表示しました。 ドロップダウンリストからカテゴリを選択すると、そのカテゴリ内のすべてのアイテムが表示され、"Show Details"というハイパーリンクがグリッドビューに表示されます。 私は初心者です。私はasp.netのウェブサイトのDALを作成する考えがありません。 asp.netウェブサイトのDALを作成するための簡単なガイドラインが必要です。ヘルプは高く評価されます。 SQLadapterではなくDALを作成する他の方法は何ですか?DAL for ASP.NETのWebサイトを作成する

+1

私は個人的に私はstrongly-を持つクラスとしての私のテーブルを定義(Entity Frameworkのコードファーストを使用しています型付き参照)。それは動的にDbを生成し、次にリポジトリパターンを使用してクエリーを行います。 'User User = UserRepo.Single(x => x.Username ==" Bob ");'変更を保存するための 'UnitOfWork'パターンを投げますそれは本当にエレガントで比較的効率的なORMです。 1つの大きな欠点は、大量の更新が遅くなることです。一度に何十万ものレコードを更新する場合、SQLアダプタに戻すほうが簡単です。 – Basic

+0

私はウェブサイトのためにそれを使用したい約15-17ページと60のデータベーステーブルがあります。 –

+1

それは本当に問題ではありません。私は〜100テーブルと数百のページを持つサイトでそれを使用しました。一括更新が問題である唯一の理由は、バッチでSQLに送信されないということです。たとえば、「UPDATE A set B = C WHERE Id = 1」、「UPDATE A set B = C WHERE Id = 2」などです。あなたが何千もの行に対して同じ更新を同時に行っていない限り、それは問題ではありません。 – Basic

答えて

1

たとえば、ここではSPを呼び出すために使用したDALがあります。

それはあなたが本当にそれは、あなたがデータにアクセスしようとする方法によって異なりますが、ストアドプロシージャを書くことになりますか、クエリを持っていますストアドプロシージャとリターンのデータセット、DataTableの、成功応答など

を実行することができますあなたのコードで。また、Entity Framework/LINQを使用するオプションもあります。

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Data; 
using System.Data.Sql; 
using System.Data.SqlClient; 
using System.Configuration; 

public class _DataInteraction 
{ 

    #region "Stored Procedures" 

    public static DataTable stdReturnDataTableQuery(string procedureName, string db) 
    { 
     DataTable myDataTable; 

     SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[db].ConnectionString); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataAdapter myDataAdapter = new SqlDataAdapter(); 

     cmd.CommandText = procedureName; 
     cmd.CommandType = CommandType.Text; 
     cmd.Connection = myConnection; 


     //----------------------------------------------------------------------- 
     // make our datatable to return 
     //----------------------------------------------------------------------- 
     myDataTable = new DataTable(); 

     //----------------------------------------------------------------------- 
     // fill the datatable with the stored procedure results 
     //----------------------------------------------------------------------- 
     try 
     { 
      myConnection.Open(); 
      myDataAdapter.SelectCommand = cmd; 
      myDataAdapter.Fill(myDataTable); 
     } 
     catch (Exception ex) 
     { 
      //flag as error happened 
      throw ex; 
     } 
     finally 
     { 
      myConnection.Close(); 
      if ((myDataAdapter != null)) 
       myDataAdapter.Dispose(); 
      if ((cmd != null)) 
       cmd.Dispose(); 
     } 

     return myDataTable; 
    } 


    // Return a datatable from the database 
    public static DataTable stdReturnDataTable(string procedureName, List<SqlParameter> myParameters, string db) 
    { 
     SqlConnection myConnection = default(SqlConnection); 
     SqlCommand myCommand = default(SqlCommand); 
     SqlDataAdapter myDataAdapter = default(SqlDataAdapter); 
     DataTable myDataTable = default(DataTable); 
     string connString = null; 

     // ----------------------------------------------------------------------- 
     // create instance of connection 
     // ----------------------------------------------------------------------- 
     connString = ConfigurationManager.ConnectionStrings[db].ConnectionString; 
     myConnection = new SqlConnection(); 
     myConnection.ConnectionString = connString; 

     //----------------------------------------------------------------------- 
     // create instance of command and dataadapter 
     //----------------------------------------------------------------------- 
     myCommand = new SqlCommand(procedureName, myConnection); 
     myDataAdapter = new SqlDataAdapter(myCommand); 

     //----------------------------------------------------------------------- 
     // say its a stored procedure command 
     //----------------------------------------------------------------------- 
     myCommand.CommandType = CommandType.StoredProcedure; 

     //----------------------------------------------------------------------- 
     // add any parameters? 
     //----------------------------------------------------------------------- 
     if ((myParameters != null)) 
     { 
      foreach (SqlParameter myParm in myParameters) 
      { 
       // add the parameter to the command 
       myCommand.Parameters.Add(myParm); 
      } 
     } 

     //----------------------------------------------------------------------- 
     // make our datatable to return 
     //----------------------------------------------------------------------- 
     myDataTable = new DataTable(); 

     //----------------------------------------------------------------------- 
     // fill the datatable with the stored procedure results 
     //----------------------------------------------------------------------- 
     try 
     { 
      myConnection.Open(); 
      myDataAdapter.Fill(myDataTable); 
     } 
     catch (Exception ex) 
     { 
      //flag as error happened 
      throw ex; 
     } 
     finally 
     { 
      myConnection.Close(); 
      if ((myDataAdapter != null)) 
       myDataAdapter.Dispose(); 
      if ((myCommand != null)) 
       myCommand.Dispose(); 
     } 

     return myDataTable; 
    } 

    // Return a dataset from the database 
    public static DataSet stdReturnDataset(string procedureName, List<SqlParameter> myParameters, string db) 
    { 
     SqlConnection myConnection = default(SqlConnection); 
     SqlCommand myCommand = default(SqlCommand); 
     SqlDataAdapter myDataAdapter = default(SqlDataAdapter); 
     DataSet ds = new DataSet(); 
     string connString = null; 

     //----------------------------------------------------------------------- 
     // create instance of connection 
     //----------------------------------------------------------------------- 
     connString = ConfigurationManager.ConnectionStrings[db].ConnectionString; 
     myConnection = new SqlConnection(); 
     myConnection.ConnectionString = connString; 

     //----------------------------------------------------------------------- 
     // create instance of command and dataadapter 
     //----------------------------------------------------------------------- 
     myCommand = new SqlCommand(procedureName, myConnection); 
     myDataAdapter = new SqlDataAdapter(myCommand); 

     //----------------------------------------------------------------------- 
     // say its a stored procedure command 
     //----------------------------------------------------------------------- 
     myCommand.CommandType = CommandType.StoredProcedure; 

     //----------------------------------------------------------------------- 
     // add any parameters? 
     //----------------------------------------------------------------------- 
     if ((myParameters != null)) 
     { 
      foreach (SqlParameter myParm in myParameters) 
      { 
       // add the parameter to the command 
       myCommand.Parameters.Add(myParm); 
      } 
     } 

     //----------------------------------------------------------------------- 
     // fill the datatable with the stored procedure results 
     //----------------------------------------------------------------------- 
     try 
     { 
      myConnection.Open(); 
      myDataAdapter.Fill(ds); 
     } 
     catch (Exception ex) 
     { 
      //flag as error happened 
      throw ex; 
     } 
     finally 
     { 
      myConnection.Close(); 
      if ((myDataAdapter != null)) 
       myDataAdapter.Dispose(); 
      if ((myCommand != null)) 
       myCommand.Dispose(); 
     } 

     return ds; 
    } 

    // Return success from a query from the database 
    public static bool db_NonQuerySuccessResponse(string strCommandText, List<SqlParameter> myParameters, string db) 
    { 
     SqlConnection SQLConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[db].ConnectionString); 
     SqlCommand SQLCommand = new SqlCommand(); 
     DataSet ds = new DataSet(); 
     string Value = ""; 
     bool success = false; 

     try 
     { 
      SQLCommand.CommandText = strCommandText; 
      SQLCommand.CommandType = CommandType.StoredProcedure; 
      SQLCommand.Parameters.Clear(); 

      if ((myParameters != null)) 
      { 
       foreach (SqlParameter myParm in myParameters) 
       { 
        // add the parameter to the command 
        SQLCommand.Parameters.Add(myParm); 
       } 
      } 

      SQLCommand.Connection = SQLConnection; 
      SQLConnection.Open(); 
      SQLCommand.ExecuteNonQuery(); 
      SQLConnection.Close(); 

      success = true; 

     } 
     catch (Exception ex) 
     { 
      success = false; 
      return success; 
     } 

     return success; 

    } 

    // General non query, no results no success 
    public static bool db_NonQuery(string strCommandText, List<SqlParameter> myParameters, string db) 
    { 


     SqlConnection SQLConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[db].ConnectionString); 
     SqlCommand SQLCommand = new SqlCommand(); 
     DataSet ds = new DataSet(); 

     try 
     { 
      SQLCommand.CommandText = strCommandText; 
      SQLCommand.CommandType = CommandType.StoredProcedure; 
      SQLCommand.Parameters.Clear(); 

      if ((myParameters != null)) 
      { 
       foreach (SqlParameter myParm in myParameters) 
       { 
        // add the parameter to the command 
        SQLCommand.Parameters.Add(myParm); 
       } 
      } 

      SQLCommand.Connection = SQLConnection; 
      SQLConnection.Open(); 
      SQLCommand.ExecuteNonQuery(); 
      SQLConnection.Close(); 

     } 
     catch (Exception ex) 
     { 
      return false; 
     } 

     return true; 

    } 

    //// Execute scalar on db 
    //public static string db_Scalar(string strCommandText, ref List<SqlParameter> myParameters, string db) 
    //{ 

    // SqlConnection SQLConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[db].ConnectionString); 
    // SqlCommand SQLCommand = new SqlCommand(); 
    // string Value = ""; 

    // SQLCommand.CommandText = strCommandText; 
    // SQLCommand.CommandType = CommandType.StoredProcedure; 
    // SQLCommand.Parameters.Clear(); 


    // if ((myParameters != null)) 
    // { 
    //  foreach (SqlParameter myParm in myParameters) 
    //  { 
    //   // add the parameter to the command 
    //   SQLCommand.Parameters.Add(myParm); 
    //  } 
    // } 

    // SQLCommand.Connection = SQLConnection; 
    // SQLConnection.Open(); 
    // Value = SQLCommand.ExecuteScalar; 
    // SQLConnection.Close(); 
    // return Value; 
    //} 

    #endregion 
} 
0

以下は参照用のサンプル1 ............

 public List<T> GetRequests(string strNo) 
    { 
     List<T> objlstMapping = null; 
     Mapping objMapping = null; 
     try 
     { 
      Database objDbInstance = CreateSQLDatabase(DbConnection.MF); 

      using (DbCommand objDbCommand = objDbInstance.GetStoredProcCommand(Constants.SP_QUESTS)) 
      { 
       DALBase.AddDbParam(objDbInstance, objDbCommand, "@No", DbType.AnsiString, ParameterDirection.Input, strFolioNo); 

       objDbCommand.Connection = objDbInstance.CreateConnection(); 
       objDbCommand.Connection.Open(); 
       using (DbDataReader dr = objDbCommand.ExecuteReader(CommandBehavior.CloseConnection)) 
       { 
        objMapping = new List<T>(); 
        if (dr.HasRows) 
        { 
         while (dr.Read()) 
         { 
          objMapping = new BrokerFolioMapping(); 
          objMapping .Brok_Code = SProposedValue(dr, "Code"); 
          objMapping .Active = SProposedValue(dr, "Status"); 
          objMapping .AccStmt_Active = SProposedValue(dr, "PortfolioStatus"); 

          objlstFolioMapping.Add(objMapping); 
         } 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
         } 
     return objlstFolioMapping; 
    } 
関連する問題