none
SQLデータについて(初級) RRS feed

  • 質問

  • よくある、「データをSQLに取り込む方法」についての質問ですが、
    1週間ほどこの掲示板で類似したものを見ていましたが、未だに理解できません。

    やりたいことは、ごく簡単なことでありまして、あるテキストボックスに書かれた
    データをSQLのDBに取り込み、それをGridViewに反映させることです。

    ここで、DetailsViewというコントロールが有効であるということは分かったのですが、
    これでは、中身がどうなっているのかさっぱりです。
    また、FileUPLoadの中身などの結果をDBに取り込みたいという事もあります。
    そこで、DetailsViewコントロールの挿入機能を、自分で書いてみたいと思ったのですが、
    正直さっぱりです。

    もしかするとSQLを勉強しないとやはり無理なのでしょうか?
    (パラメータやSQLと思われる構文を見かけますので)

    有効なメゾット等教えていただけると幸いです。
    宜しくお願い致します。
    2009年6月30日 8:38

回答

  • > もしかするとSQLを勉強しないとやはり無理なのでしょうか?

    もしかしなくても、本を買って読んで勉強するとか、Web を見て勉強するとかして、基本的な知識をつけない
    と、無理とは言わないまでも、かなり難しいと思いますが・・・

    すべてを実現できる魔法のメソッドはありませんが、SqlDataSource(使っているのは SQL Server ですよ
    ね?)、DetailsView、GridView を使って、やりたいことは実現できると思います(FileUpload は別)。

    まずは以下のサイトなどを見て勉強されることをお勧めします。

    DetailsView クラス
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.detailsview.aspx

    • 回答としてマーク ワカRUN 2009年7月1日 9:02
    2009年6月30日 12:17
  • やりたいことは、ごく簡単なことでありまして、あるテキストボックスに書かれた
    データをSQLのDBに取り込み、それをGridViewに反映させることです。
    実現することは簡単なことでも、その背景にはいろいろな知識が必要になります。


    もしかするとSQLを勉強しないとやはり無理なのでしょうか?
    (パラメータやSQLと思われる構文を見かけますので)

    有効なメゾット等教えていただけると幸いです。
    宜しくお願い致します。
    まずはデータベースを学ばれた方が良いでしょう。何か書籍で簡単でも一通り勉強されることをお勧めします。まずはどういうことがあるのかを知ってください。マスターしなくても知っていれば十分です。実際にプログラムを書くときに、その知識を糸口に調べていけば良いのですから。
    データベースの操作はSQLという言語で行います。DetailsViewやGridViewなどのコントロールも、SQLをデータベースに発行することによってデータを取得したり、更新したりしているのです。
    ウィザードに従えば以下のようにそれなりにDetailsViewを動かすことはできます。

    ASP.NET 2.0 リッチ データ コントロールによるデータ アクセス ページの実装 その 2
    http://msdn.microsoft.com/ja-jp/events/dd231276.aspx

    しかし、DetailsViewはデータベースを操作するための窓口に過ぎません。例えならデータベースが車でDetailsViewがその車のハンドルです。操作はできても赤信号で止まらなかったり、右側通行してはいけません。データベースをどう操作すれば良いのかを学ばなければ、いつまでも小学生が車を運転しているようなものです。車を運転する時には交通ルールや運転の仕方などを知っていなければなりません。長くなりましたが、結局何が言いたいかといいますと、何となく動けば良いというものではなく、その背景を知らないと失敗するし(必ずしも失敗することが悪いことだとは思いませんが)、壁を乗り越えられなくなってしまうんじゃないかと思うのです。

    #ちなみに「SQL」という単語の使い方がおかしいです。

    >よくある、「データをSQLに取り込む方法」についての質問ですが



    >データをSQLのDBに取り込み

    です。
    ここのSQLはSQL Serverのことを指していると思われますが・・・
    ちなみに

    >有効なメゾット等教えていただけると幸いです。

    は、メソッドですね。もう少し基礎を固めて下さい。前述したDetailsViewのウイザードなど、ウイザードを使ってそれなりに動くものは作成できますが、ウイザードだけで実際のアプリケーションを作成できることは極めて稀です。ですから自力でコードを書くための基礎が必要になるのです。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク ワカRUN 2009年7月1日 9:02
    2009年6月30日 15:43
    モデレータ

すべての返信

  • > もしかするとSQLを勉強しないとやはり無理なのでしょうか?

    もしかしなくても、本を買って読んで勉強するとか、Web を見て勉強するとかして、基本的な知識をつけない
    と、無理とは言わないまでも、かなり難しいと思いますが・・・

    すべてを実現できる魔法のメソッドはありませんが、SqlDataSource(使っているのは SQL Server ですよ
    ね?)、DetailsView、GridView を使って、やりたいことは実現できると思います(FileUpload は別)。

    まずは以下のサイトなどを見て勉強されることをお勧めします。

    DetailsView クラス
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.detailsview.aspx

    • 回答としてマーク ワカRUN 2009年7月1日 9:02
    2009年6月30日 12:17
  • やりたいことは、ごく簡単なことでありまして、あるテキストボックスに書かれた
    データをSQLのDBに取り込み、それをGridViewに反映させることです。
    実現することは簡単なことでも、その背景にはいろいろな知識が必要になります。


    もしかするとSQLを勉強しないとやはり無理なのでしょうか?
    (パラメータやSQLと思われる構文を見かけますので)

    有効なメゾット等教えていただけると幸いです。
    宜しくお願い致します。
    まずはデータベースを学ばれた方が良いでしょう。何か書籍で簡単でも一通り勉強されることをお勧めします。まずはどういうことがあるのかを知ってください。マスターしなくても知っていれば十分です。実際にプログラムを書くときに、その知識を糸口に調べていけば良いのですから。
    データベースの操作はSQLという言語で行います。DetailsViewやGridViewなどのコントロールも、SQLをデータベースに発行することによってデータを取得したり、更新したりしているのです。
    ウィザードに従えば以下のようにそれなりにDetailsViewを動かすことはできます。

    ASP.NET 2.0 リッチ データ コントロールによるデータ アクセス ページの実装 その 2
    http://msdn.microsoft.com/ja-jp/events/dd231276.aspx

    しかし、DetailsViewはデータベースを操作するための窓口に過ぎません。例えならデータベースが車でDetailsViewがその車のハンドルです。操作はできても赤信号で止まらなかったり、右側通行してはいけません。データベースをどう操作すれば良いのかを学ばなければ、いつまでも小学生が車を運転しているようなものです。車を運転する時には交通ルールや運転の仕方などを知っていなければなりません。長くなりましたが、結局何が言いたいかといいますと、何となく動けば良いというものではなく、その背景を知らないと失敗するし(必ずしも失敗することが悪いことだとは思いませんが)、壁を乗り越えられなくなってしまうんじゃないかと思うのです。

    #ちなみに「SQL」という単語の使い方がおかしいです。

    >よくある、「データをSQLに取り込む方法」についての質問ですが



    >データをSQLのDBに取り込み

    です。
    ここのSQLはSQL Serverのことを指していると思われますが・・・
    ちなみに

    >有効なメゾット等教えていただけると幸いです。

    は、メソッドですね。もう少し基礎を固めて下さい。前述したDetailsViewのウイザードなど、ウイザードを使ってそれなりに動くものは作成できますが、ウイザードだけで実際のアプリケーションを作成できることは極めて稀です。ですから自力でコードを書くための基礎が必要になるのです。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク ワカRUN 2009年7月1日 9:02
    2009年6月30日 15:43
    モデレータ
  • ご返信ありがとうございます。

    了解しました。
    やはりVBの構文だけでは操作できないということが分かりました。
    そしてSQLを基礎から勉強していくことが重要だということも分かりました。

    現在SQLを勉強している段階ですが、前にACCESSをやっていた事が
    あるので、すんなり頭に入っていきそうです。

    このSQLの命令文?とVBやC#を組み合わせるというのは
    かなりポテンシャルが高そうですね。

    これがマスターできれば、WEB上でアンケートを行い、分析できるという
    ことですね。

    またしばらくしましたら、具体的な質問をさせていただくかもしれません。
    宜しくお願い致します。

    2009年7月1日 2:52
  • すいません。
    いろいろと見ていたところ、InsertCommand文という例文があったので、
    真似してみましたが、以下のようなエラーが出てきました。

    何か心当たりのある方がいましたら宜しくお願い致します。


       SqlDataSource1.InsertCommand = "INSERT INTO Table2 VALUES (@日付,@写真,@コメント)"

                SqlDataSource1.InsertParameters.Clear()
                SqlDataSource1.InsertParameters.Add("日付", DateTime.Today.ToString())
                SqlDataSource1.InsertParameters.Add("写真", UpFolder_URL + FileUpload1.FileName)
                SqlDataSource1.InsertParameters.Add("説明", Comment.Text)

                SqlDataSource1.Insert()
     
    説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

    例外の詳細: System.Data.SqlClient.SqlException: スカラ変数 "@コメント" を宣言してください。

    ソース エラー:

    ハンドルされていない例外を生成したソース コードは、デバッグ モードでコンパイルされた場合のみ表示できます。これを有効にするには、以下の手順に従い、URL を要求してください。

    1. "Debug=true" ディレクティブをエラーを生成したファイルの上に追加してください。例:

      <%@ Page Language="C#" Debug="true" %>

    または:

    2. 以下のセクションをアプリケーションの構成ファイルに追加します。

    <configuration>
       <system.web>
           <compilation debug="true"/>
       </system.web>
    </configuration>

    2 番目の方法を使った場合、指定されたアプリケーション内のすべてのファイルがデバッグ モードでコンパイルされます。最初の方法を使った場合は、指定した特定のファイルのみがデバッグ モードでコンパイルされます。

    重要: デバッグ モードでアプリケーションを実行してもメモリおよびパフォーマンスのオーバーヘッドが発生します。製品シナリオに配置する前にアプリケーションでデバッグが無効にされていることを確認してください。

    '/WebSite8' アプリケーションでサーバー エラーが発生しました。

    スカラ変数 "@コメント" を宣言してください。

     

    2009年7月1日 7:07
  • すいません。
    @の後が間違えていました。
    これをSQLの列名と一致させたらできました。

    ご迷惑をおかけしました。



    2009年7月1日 7:23
  • いつもお世話になります。

    SQL については、始めたばかりであり、先日SQL Server  にデータを書き込むプログラムを
    VBで書けることを知りました。

    教えていただきたいのですが、データを削除するにはどのような構文を買えばよろしいのでしょうか?
    GridView で、削除ボタンを追加したのですが、ここでの「削除」ボタンを押した場合の
    構文が分かりません。whereの後にどのような条件を入れればよろしいのでしょうか?
    宜しくお願い致します。

    列スキーマは、日付、写真、説明の3つです。
    (*前回の質問事項参照)

           SqlDataSource1.DeleteCommand = "DELETE FROM Table2 WHERE ???"

              SqlDataSource1.Delete()

    2009年7月10日 2:53
  • かなり基本的な質問ですので、まずは以下のページなどを一通り読まれることをおすすめします。

    さらっと覚えるSQL&T-SQL入門(8)
    SQL文でデータを追加・更新・削除する方法
    http://www.atmarkit.co.jp/fdb/rensai/tsql08/tsql08_2.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月10日 3:12
    モデレータ
  • すいません。
    お返事ありがとうございます。

    一応SQL については、本を読んである程度理解したつもりではあります。
    ですが、恐らくGridViewの根本的機能がわかっていない状態だと思います。

    ここでは、削除ボタンを押した列を消したいのですが、
    このとき、どのような条件分になるかが分かりません。

    各削除ボタンでID(列)が変わってしまうので、書きようがない気もします。

    宜しくお願い致します。

    2009年7月10日 7:35
  • そういうことだったんですね。失礼いたしました。すいません。

    さて、どのようにGridViewを表示されているのかわからないのですが(ButtonFieldの使用など)、とりあえず以下をご紹介します。

    [ASP.NET]GridViewコントロールにコマンド・ボタンを配置するには?(応用編)[2.0、3.0、3.5、C#、VB]
    http://www.atmarkit.co.jp/fdotnet/dotnettips/830aspgridvwcmdbtn2/aspgridvwcmdbtn2.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月10日 8:14
    モデレータ
  • SqlDataSource と組み合わせてウィザードベースで作ってみてはどうですか?

    Delete クエリは自動生成されるので、それを見れば WHERE 句をどうすればよ
    いかは分かると思います。
    2009年7月10日 14:49