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

 MS-Accessのデータ型のASP.NETのデータコントロールでの表記やOleDb接続でハンドリ
ングする際の表記は、「何だったけ?」といつも忘れてしまう。これら3者の表記比較
表はとても重宝する。
 一覧にまとめてあるページを見付けたのでリンクを張っておく。 10/11/13

↓MS-Accessと.NETとOleDbTypeのデータ型表記対比表
http://support.microsoft.com/kb/320435/ja

【代表例】

MS-Accessのデータ型.NETOleDbType
テキスト型StringVarWChar
長整数型Int32Integer
整数型Int16SmallInt
オートナンバ型Int32Integer
日付/時刻型DateTimeDate
通貨型DecimalNumeric

【コード記述例】
・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 />
        &nbsp;<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



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

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