質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.61%

ASP.NETにおけるデータベースへの接続の仕方

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,215

takumi0610

score 42

初心者です。
ASP.NETを学習中なのですが、情報が少なく困っておりまして、
どなたか教えていただけませんでしょうか。
よろしくお願いいたします。

前提・実現したいこと

「現在作っているアプリとデータベース(SQL Server)を連携したい」です。

※状況
ASP.NET(言語はVB.NET)を使用して、(ツイッターのような)簡易投稿アプリを作ろうと思っております。
※プロジェクトを作る際は、(MVC等ではなく、空の状態から作っています)

現在、新規投稿する際のページを作成しておりまして、
・そのページ仮のViewのコードを書いたファイル(下記、該当のソースコード)(マスターページを含むWebファイルで作成)
・SQL Serverをインストールし、(Windows認証で接続してます)そこに、Tweetsテーブル(idとtextのカラムを用意)を用意
を準備しました。
ここから、投稿内容に書き込んだ本文を、送信ボタンを押すことで、データベースに保存したいです。

送信を押したときに、データベースに保存するためには、そもそも連携が必要だと思うのですが、
そのやり方が調べていても、よくわからず困っております。
何か新しいフォルダやファイルを作って、そこに何かを書き込むのか、その流れと具体的な方法が知りたいです。

該当のソースコード

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Source/my-twitter.Master" CodeBehind="new.aspx.vb" Inherits="my_twitter._new" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <link rel="stylesheet" href="/CSS/new.css" />
    <form action="#" method="post">
        <p><label for="text-field">ツイート本文</label><br />
            <textarea class="test" name="tweet-text" id="text-field" maxlength="140"></textarea></p>
        <asp:Button ID="Button1" runat="server" Text="送信" />
    </form>
</asp:Content>

試したこと

以下のページを参照しましたが、ある程度知識のある方前提のお話なのか、あまり理解できませんでした。

ASP.NET入門

補足情報(FW/ツールのバージョンなど)

統合開発環境
Visual Studio2019

使用PC
Windows10(Macで仮想環境を作って起動させているもの)

DB関連
以下のサイトを参考にそのまま行いました。(SQL Server Express Edition)
SQL Server入門

SQL Server Management Studioを使って管理しております。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • len_souko

    2019/08/12 12:19

    4.の理解できなかった個所はここに書くのではなくて質問文に書いてください
    ここに書いてある内容は質問者とのやり取りのためなので全部表示されるわけではありませんので、見ようとしない限り表示されません

    キャンセル

  • SurferOnWww

    2019/08/12 12:34

    > 2.LocalDBというものが何かわかっておらず、調べましたらおっしゃるとおり、SQL Server Express EditionはLocalDBというもののようでした。

    ホントに LocalDB なのですか? 質問欄に追記された https://sql55.com/sql-server/install-microsoft-sql-server.php の記事に書いてあるのは LocalDB ではなく SQL Server の Express 版ですけど。LocalDB と SQL Server Express は違うものです。どっちかはっきりしてください。

    基本的なところが理解できてないようですのですこし勉強してください。文章でやり取りする掲示板ですから、話が通じる程度の基本的な知識がないと話が通じなくて、なかなか解決にたどり着けないです。

    キャンセル

  • SurferOnWww

    2019/08/12 12:38

    > 3.MVCアプリと、WebFormsの違いはよくわかっていないのですが、

    そこも勉強して、どっちにしたいのかはっきりさせてください。Web Forms で説明して、実は作りたいのは MVC でしたとか言われると、答えた方はバカみたいです。

    キャンセル

回答 1

checkベストアンサー

0

4.理解できなかった箇所としましては、

そこだけ分かれば解決するということはなさそうな気がしますが、とりあえずその「理解できなかった箇所」の 3 点に答えます。

以下の説明には、多分、分からない用語とかあると思いますが、独自に基本的なところの勉強進めて、理解できるようになってください。

・サイト内に載っているコードは、新たに(サイト内の名前の通り)ファイルを作ってそのまま書くのか

ASP.NET Web Forms アプリを Web サイトプロジェクトで作成すると、.aspx と .aspx.vb にファイルを分けなくても、VB.NET のコードを含め全て .aspx ファイルに記述することができます。参考にしている記事のコードはそれです。

しかし、同じ ASP.NET Web Forms アプリでも、Web アプリケーションプロジェクトで作成すると、ページは必ず .aspx と .aspx.vb にファイルを分けて、VB.NET のコード、即ち参考にされている記事で言うとイベントハンドラのコードは .aspx.vb ファイルに記述することになります。

質問者さんが質問にアップしたコードを見ると、Web アプリケーションプロジェクトで作成したもののようですので、.aspx とは別ファイルの .aspx.vb ファイルに記述することになります。質問者さんのコードを見ると CodeBehind="new.aspx.vb" の new.aspx.vb がそれのはずで、骨格は自動生成されてファイル自体は存在していると思います。それにイベントハンドラのコードを追加することになります。

・コードをコピペするだけで何もせずとも接続されるのか

そんなことはあり得なくて、SQL Server がきちんとインストールされて動いているのはもちろんのこと、正しい接続文字列を設定しなければダメです。

さらに、SQL Server Express を利用しているとすると、SQL Server Express 側にもアクセスするユーザー(ASP.NET Web アプリの場合はワーカープロセスのアカウント)の認証・承認の設定が必要です。

・参考サイトはSQL認証の場合とされていたが、Windows認証の場合はどうなるのか

SQL Server で Windows 認証が有効になっていれば(多分デフォルトで有効になっていると思いますが)、接続文字列を変更するだけで済むはずです。

ローカルの SQL Server Express の sqlexpress という名前の名前付きインスタンス(SQL Server の Express 版をデフォルトでインストールするとそうなります)に PUBS というデータベース名を指定して Windows 認証で接続する例ですが、以下のようになります。

Data Source=(local)\sqlexpress;Initial Catalog=PUBS;Integrated Security=True

なお、この場合も、SQL Server Express を利用しているとすると、SQL Server Express 側にアクセスするユーザー(ASP.NET Web アプリの場合はワーカープロセスのアカウント)の認証・承認の設定が必要です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/12 15:36 編集

    詳しく教えていただき、ありがとうございます。
    作成しようとしているページのvbのファイルの方に記述するのですね。
    おっしゃる通り、わからない表現や用語などありますが、調べて少しでも理解できるよう努めます。
    質問の仕方が良くなかったにも関わらず、丁寧に教えてくださり、ありがとうございました。
    一度、やってみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る