2012-02-09 8 views
0

私はasp.netでかなり新しいです。私の質問を読む前に皆さんに知らせておきたいだけでした。私はアドレス帳を作成しており、SQLデータベースのデータをaspxページにあるgridviewに表示するためにデータセットを使用しています。私はこれまでデータセットとgridviewのやりとり(データの更新)

  SqlConnection conn = new SqlConnection(conectionstring); 
      conn.Open(); 
      string sql = "SELECT * FROM Directorio"; 
      SqlDataAdapter myCommand = new SqlDataAdapter(sql, conn); 
      DataSet ds = new DataSet(); 
      myCommand.Fill(ds); 
      DataView source = new DataView(ds.Tables[0]); 
      GridView1.DataSource = source; 
      GridView1.DataBind(); 

このコードは、データベースからデータを取得するデータセットを満たし、GridViewの中でそれを表示するこのコードを持っています。私の質問は、どのように私はSQLデータベースに変更を適用することができますので、私は、グリッドビューを変更し、データセットを更新することができますです。 私は多くのチュートリアルを見つけましたが、それは事柄が異なっています。彼らはデータベースをプロジェクトにリンクし、これをコード化しないので、手動で行う方法を学びたいと思います。 編集ボタンで列を作成したgridviewプロパティで編集を有効にしようとしましたが、クリックするとアプリがクラッシュします。 おかげで私の仲間のプログラマー:)

PS:私は

答えて

1

は、基本的には、データソースコントロールのニーズがあるため、その種のasp.netアーキテクチャのコンテキストで複雑の変化を編成ADO.NETアーキテクチャにundestandください。 http://msdn.microsoft.com/en-us/library/aa581776.aspx

+0

hi。あなたの答えのおかげで、チュートリアルは非常に便利に見えますが、再び "私は手動でやっていません"という気持ちはまだあります。私はそれをやりたいとは思わないのでしょうか?私はそれを使用し、データベースにアクセスする競合を手動で作成しました。 – itsmedavid

+0

私が間違っている場合、私を訂正することを疑うことはありません。 – itsmedavid

+0

ObjectDataSourceの例を見れば、おそらく両方の世界の中で最高のものになるでしょう。http://msdn.microsoft.com/en-us/library/ms178538.aspx –

0

あなたはかなりの数のオプションがあります:あなたはこの記事を楽しむかもしれない -

は、私はあなたががから来たどこ知っていると思う、と私は全くありました。私はasp.net MVCを使用してWebフォームとasp.netを使用していると仮定しています。

プロジェクトの堅牢性や実装方法などによって、いくつかのルートに進むことができます。 データアクセスレイヤーがある場合は、EF(Entity Framework)を使用してデータベースへのデータの取得と送信を処理できます。 EFはあなたのウェブフォームの外であなたのためのCRUD操作の多くを処理する点で本当にうれしいです。完全な抽象化ではなく、コードビハインドからsqlを分離して管理可能なレイヤーに変換します。これは、小規模なプロジェクトか何かあなただけの同じADOを使用してバックテーブルにデータを挿入することができますで遊んでいる/ SQLの場合は

public int CreateNewUser(string username, string password) 
    { 
     int insertUser = DatabaseUtilities.Perform_CRUD_Operation(
      String.Format(
       "INSERT INTO ContactsUser (UserName, Password) " + 
       "VALUES ('{0}', '{1}', 
       username, password), 
      ConnectionString); 
    } 


//factored out the Perform operation for reuse in other classes you could do all this in one call 

public static int Perform_CRUD_Operation(string sqlStatement, string connectionString) 
    { 
     OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;" + connectionString); 
     OleDbCommand cmd = new OleDbCommand(sqlStatement, con); 

     try 
     { 
      con.Open(); 
      int affectedRows = cmd.ExecuteNonQuery(); 
      if (affectedRows == 1) 
      { 
       return 0; 
      } 
      else 
      { 
       return AFFECTED_ROWS_ERROR; 
      } 
     } 
     catch (Exception) 
     { 
      return UNHANDLED_ERROR; 
     } 
     finally 
     { 
      con.Close(); 
     } 
    } 

上記のこれは単なる一例です。プロダクションコードのために何かしているのであれば、EFかストアドプロシージャの使用を強くお勧めします。上記のようなコードを使用すると、テストや概念の証明には問題ありませんが、SQLインジェクションでは本当に脆弱であり、非常に安全ではありません。

UIやコードの背後にあるコードを見ることのないグリッドビューでは、何をやるべきか、どこから見たいのかを示唆することは不可能です。

+0

お返事いただきありがとうございます。私は本当にそれを感謝し、間違いなくあなたの助言を取るつもりです。 – itsmedavid

関連する問題