- 追加された行はこの色です。
- 削除された行はこの色です。
閲覧総計:&counter(); (本日:&counter(today); 昨日:&counter(yesterday);)
MS-Accessのデータ型のASP.NETのデータコントロールでの表記やOleDb接続でハンドリ
ングする際の表記は、「何だったけ?」といつも忘れてしまう。これら3者の表記比較
表はとても重宝する。
一覧にまとめてあるページを見付けたのでリンクを張っておく。 10/11/13
↓MS-Accessと.NETとOleDbTypeのデータ型表記対比表
http://support.microsoft.com/kb/320435/ja
【代表例】
|~MS-Accessのデータ型|~.NET|~OleDbType|
|テキスト型|String|VarWChar|
|長整数型|Int32|Integer|
|整数型|Int16|SmallInt|
|オートナンバ型|Int32|Integer|
|日付/時刻型|DateTime|Date|
|通貨型|Decimal|Numeric|
【コード記述例】
・ASP.NETのデータコントロールのコード例
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
</head>
<body>
<form id="form1" runat="server">
<div>
AccessでのGridView編集の稼働確認 09/09/17<br />
(「オプティミスティック同時実行制御」を設定)<br />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
DataKeyNames="ID" DataSourceID="AccessDataSource1" EmptyDataText="表示するデータ レコードがありません。"
ForeColor="#333333" GridLines="None">
<RowStyle BackColor="#E3EAEB" />
<Columns>
<asp:CommandField ButtonType="Button" ShowEditButton="True" />
<asp:BoundField DataField="ID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="名前" HeaderText="名前" SortExpression="名前" />
<asp:BoundField DataField="年齢" HeaderText="年齢" SortExpression="年齢" />
</Columns>
<FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#7C6F57" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="App_Data\Access01.mdb"
DeleteCommand="DELETE FROM [名簿] WHERE [ID] = ? AND (([名前] = ?) OR ([名前] IS NULL AND ? IS NULL)) AND (([年齢] = ?) OR ([年齢] IS NULL AND ? IS NULL))"
InsertCommand="INSERT INTO [名簿] ([ID], [名前], [年齢]) VALUES (?, ?, ?)"
SelectCommand="SELECT [ID], [名前], [年齢] FROM [名簿]"
UpdateCommand="UPDATE [名簿] SET [名前] = ?, [年齢] = ? WHERE [ID] = ? AND (([名前] = ?) OR ([名前] IS NULL AND ? IS NULL)) AND (([年齢] = ?) OR ([年齢] IS NULL AND ? IS NULL))"
ConflictDetection="CompareAllValues" OldValuesParameterFormatString="original_{0}">
<DeleteParameters>
<asp:Parameter Name="original_ID" Type="Int32" />
<asp:Parameter Name="original_名前" Type="String" />
<asp:Parameter Name="original_年齢" Type="Int16" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="ID" Type="Int32" />
<asp:Parameter Name="名前" Type="String" />
<asp:Parameter Name="年齢" Type="Int16" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="名前" Type="String" />
<asp:Parameter Name="年齢" Type="Int16" />
<asp:Parameter Name="original_ID" Type="Int32" />
<asp:Parameter Name="original_名前" Type="String" />
<asp:Parameter Name="original_名前" Type="String" />
<asp:Parameter Name="original_年齢" Type="Int16" />
<asp:Parameter Name="original_年齢" Type="Int16" />
</UpdateParameters>
</asp:AccessDataSource>
</div>
</form>
</body>
</html>
OleDbハンドリング時のコード例
'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)
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
~
#comment_nospam
#vote(参考になった[0],ふつう[0],参考にならなかった[0])
#vote(参考になった[0],ふつう[0],参考にならなかった[9])