閲覧総計:&counter();  (本日:&counter(today);  昨日:&counter(yesterday);)

 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|
~
【目次】項目をクリックするとその記事に飛べます。
#contents
~

*MS-AccessDBへのOleDBでのデータ挿入 [#p3368895]

【稼働画面】
#ref(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

#comment_nospam
#vote(参考になった[0],ふつう[1],参考にならなかった[0])
~
~
*MS-AccessDBへのOleDBでのデータ更新 [#p3368895]

【稼働画面】
#ref(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

#comment_nospam
#vote(参考になった[1],ふつう[0],参考にならなかった[0])
~
~

*MS-AccessDBへのOleDBでのデータ抽出 [#zc485e0a]

【稼働画面】
#ref(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

#comment_nospam
#vote(参考になった[0],ふつう[0],参考にならなかった[0])
~
~
*MS-AccessDBへのOleDBでのデータ削除 [#f56409a4]

【稼働画面】
#ref(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

#comment_nospam
#vote(参考になった[0],ふつう[0],参考にならなかった[0])

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