閲覧総計:&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(参考になった[2],ふつう[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 - SSS -- [[A]] &new{2014-08-25 (月) 08:55:53}; #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(参考になった[2],ふつう[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(参考になった[1],ふつう[0],参考にならなかった[0])