閲覧総計:15851  (本日:1  昨日:0)

 MS-AccessDBをOleDbでハンドリングするのはASP.NET1.X時代の古い手法であるが、
現在(ASP.NET3.5)においても、シンプルで簡便・確実なMS-AccessDBをハンドリングする
手法であり、まだまだ現役手法であると考える。
 今回はMS-AccessDBをOleDb手法で挿入・更新・抽出・削除する方法を確認したので
備忘を残しておく。  2010/11/14

 ちなみにASP.NET2.0から各種DBのハンドリングは「データソースコントロール」に統
一され、DBがMS-Access、SQL Server、Oracle等である事をユーザが意識しなくて良い
統一コードで記述出来る様に改良されている。
↓「データソース・コントロールでいってみよう(前編)」 06/07/29
http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_06/vs2005db_06_03.html
 ただし、コード記述はFactoryメッソドを使う等多少複雑になるのが短所である。
使用するDBがMS-Accessに固定されている場合にはOleDB手法でDBをハンドリングする
方が確実・効率的と考えた。  2010/11/14

【使用DBテーブル構造】
Accessデータベース名:AccessDB.mdb
テーブル名:得意先テーブル

フィールド名データ型フィールドサイズ
得意先ID (主キー)オートナンバー型長整数型
社名テキスト型40
担当者名テキスト型30
電話テキスト型24



【目次】項目をクリックするとその記事に飛べます。


MS-AccessDBへのOleDBでのデータ挿入

【稼働画面】

OleDbInsert.jpg

【Insert.aspx】

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.OleDb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'AccessDBにOleDbで接続
        Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\AccessDB.mdb")
            'OleDbでのパラメータ設定はPositional Parameter方式(Values(?, ?, ?))で設定
            Dim cmd As New OleDbCommand("Insert Into [得意先テーブル] ([社名], [担当者名], [電話]) Values(?, ?, ?)", con)

            'ParametersコレクションのValueプロパティの省略形記法
            cmd.Parameters.Add(New OleDbParameter("@CompanyName", "フレンドリーソフト"))
            cmd.Parameters.Add(New OleDbParameter("@ContactName", "葛西 秋雄"))
            cmd.Parameters.Add(New OleDbParameter("@Phone", "0480-99-9999"))
 
            'ParametersコレクションのValueプロパティの正式記法
            'cmd.Parameters.Add("@CompanyName", OleDbType.VarWChar, 40)
            'cmd.Parameters("@CompanyName").Value = "フレンドリーソフト"
            'cmd.Parameters.Add("@ContactName", OleDbType.VarWChar, 30)
            'cmd.Parameters("@ContactName").Value = "葛西 秋雄"
            'cmd.Parameters.Add("@Phone", OleDbType.VarWChar, 24)
            'cmd.Parameters("@Phone").Value = "0480-99-9999"
            
            con.Open()
            'クエリの実行(INSERTクエリの場合は結果セットを返さないExecuteNonQuery)
            cmd.ExecuteNonQuery()
           
            '新規挿入したデータのIDを取得する方法
            cmd.CommandText = "Select @@Identity"
            Dim intCustomerID As Integer = cmd.ExecuteScalar()
            Label1.Text = String.Format("得意先ID <b>{0}</b> を追加しました.", intCustomerID.ToString())
        End Using
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    OleDbでデータInsert(挿入)処理  10/11/13<br />
        <br />
        参考ページ:<a href="http://asp35.com/adoAccess/Chapter1/ch1-06.aspx">SQLのInsertにパラメータを指定してレコードを追加するサンプル</a><br />
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="データ挿入" />
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />
    </div>
    </form>
</body>
</html>

【参考にしたページ】
↓SQLのInsertにパラメータを指定してレコードを追加するサンプル
http://asp35.com/adoAccess/Chapter1/ch1-06.aspx


選択肢 投票
参考になった 3  
ふつう 1  
参考にならなかった 0  




MS-AccessDBへのOleDBでのデータ更新

【稼働画面】

OleDbUpdate.jpg

【Update.aspx】

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.OleDb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'AccessDBにOleDbで接続
        Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\AccessDB.mdb")
            'OleDbでのパラメータ設定はPositional Parameter方式(Set [電話] = ? Where [社名] = ?)で設定
            Dim cmd As New OleDbCommand("Update [得意先テーブル] Set [電話] = ? Where [社名] = ?", con)

            'ParametersコレクションのValueプロパティの省略形記法
            cmd.Parameters.Add(New OleDbParameter("@Phone", "0480-88-8888"))
            cmd.Parameters.Add(New OleDbParameter("@CompanyName", "フレンドリーソフト"))
 
            'ParametersコレクションのValueプロパティの正式記法
            'cmd.Parameters.Add("@Phone", OleDbType.VarWChar, 24)
            'cmd.Parameters("@Phone").Value = "0480-99-9999"
            'cmd.Parameters.Add("@CompanyName", OleDbType.VarWChar, 40)
            'cmd.Parameters("@CompanyName").Value = "フレンドリーソフト"
            
            con.Open()
            'クエリの実行(Updateクエリの場合は結果セットを返さないExecuteNonQuery)
            Dim intUpdateCount As Integer = cmd.ExecuteNonQuery()
            Label1.Text = String.Format("<b>{0}</b> 件の得意先を更新しました.", intUpdateCount.ToString())
        End Using
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    OleDbでデータ更新(Update)処理  10/11/13<br />
        <br />
        参考ページ:<a href="http://asp35.com/adoAccess/Chapter1/ch1-07.aspx">SQLのUpdateにパラメータを指定してレコードを更新するサンプル</a><br />
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="データ更新" />
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />
    </div>
    </form>
</body>
</html>

【参考にしたページ】
↓SQLのUpdateにパラメータを指定してレコードを更新するサンプル
http://asp35.com/adoAccess/Chapter1/ch1-07.aspx


選択肢 投票
参考になった 1  
ふつう 1  
参考にならなかった 0  




MS-AccessDBへのOleDBでのデータ抽出

【稼働画面】

OleDbSelect.jpg

【Select.aspx】

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.OleDb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'AccessDBにOleDbで接続
        Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\AccessDB.mdb")
            'OleDbでのパラメータ設定はPositional Parameter方式(Where [社名] = ?)で設定
            Dim cmd As New OleDbCommand("Select * From [得意先テーブル] Where [社名] = ?", con)

            'ParametersコレクションのValueプロパティの省略形記法
            cmd.Parameters.Add(New OleDbParameter("@CompanyName", "フレンドリーソフト"))
 
            'ParametersコレクションのValueプロパティの正式記法
            'cmd.Parameters.Add("@CompanyName", OleDbType.VarWChar, 40)
            'cmd.Parameters("@CompanyName").Value = "フレンドリーソフト"
            
            con.Open()
            'クエリの実行(Selectクエリの場合は結果セットを返すExecuteReader)
            Dim dr As OleDbDataReader = cmd.ExecuteReader()
            Do While dr.Read()
                'Label1.Text &= dr.GetValue(0) & ":" & dr.GetValue(1) & "<br />"
                Label1.Text &= dr("得意先ID") & ":" & dr("社名") & " " & dr("担当者名") & "<br />"
            Loop
            dr.Close()
        End Using
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    OleDbでデータ抽出(Select)処理  10/11/13<br />
        <br />
        参考ページ:<a href="http://asp35.com/adoAccess/Chapter1/ch1-09.aspx">SQLのSelectにパラメータを指定してレコードを抽出するサンプル</a><br />
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="データ抽出" />
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        <br />
    </div>
    </form>
</body>
</html>

【参考にしたページ】
↓SQLのSelectにパラメータを指定してレコードを抽出するサンプル
http://asp35.com/adoAccess/Chapter1/ch1-09.aspx


選択肢 投票
参考になった 2  
ふつう 0  
参考にならなかった 0  




MS-AccessDBへのOleDBでのデータ削除

【稼働画面】

OleDbDelete.jpg

【Delete.aspx】

<%@ Page Language="VB" %>
<%@ Import Namespace="System.Data.OleDb" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'AccessDBにOleDbで接続
        Using con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\AccessDB.mdb")
            'OleDbでのパラメータ設定はPositional Parameter方式(Where [社名] = ?)で設定
            Dim cmd As New OleDbCommand("Delete * From [得意先テーブル] Where [社名] = ?", con)

            'ParametersコレクションのValueプロパティの省略形記法
            cmd.Parameters.Add(New OleDbParameter("@CompanyName", "フレンドリーソフト"))
 
            'ParametersコレクションのValueプロパティの正式記法
            'cmd.Parameters.Add("@CompanyName", OleDbType.VarWChar, 40)
            'cmd.Parameters("@CompanyName").Value = "フレンドリーソフト"
            
            con.Open()
            'クエリの実行(Deleteクエリの場合は結果セットを返さないExecuteNonQuery)
            Dim intDeleteCount As Integer = cmd.ExecuteNonQuery()
            Label1.Text = String.Format("<b>{0}</b> 件の得意先を削除しました.", intDeleteCount.ToString())
        End Using
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    OleDbでデータ削除(Delete)処理  10/11/14<br />
        <br />
        参考ページ:<a href="http://asp35.com/adoAccess/Chapter1/ch1-08.aspx">SQLのDeleteにパラメータを指定してレコードを削除するサンプル</a><br />
        <br />
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="データ削除" />
        <br />
        <br />
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <br />
    </div>
    </form>
</body>
</html>

【参考にしたページ】
↓SQLのDeleteにパラメータを指定してレコードを削除するサンプル
http://asp35.com/adoAccess/Chapter1/ch1-08.aspx


選択肢 投票
参考になった 1  
ふつう 0  
参考にならなかった 0  

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS