aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/idbdatabase/index.html
blob: 784422a4909c18bf485ef84d5e9d7f2900e8ff51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
---
title: IDBDatabase
slug: Web/API/IDBDatabase
tags:
  - API
  - Database
  - IDBDatabase
  - IndexedDB
  - Storage
  - transactions
translation_of: Web/API/IDBDatabase
---
<p>{{APIRef()}}</p>
<div>
 <p>IndexedDB API<code>のIDBDatabase</code>インターフェイスは、<a href="/ja/docs/IndexedDB#database_connection">データベースへの接続</a>を提供します。 <code>IDBDatabase</code>オブジェクトで、データベースの<a href="/ja/docs/IndexedDB#gloss_transaction">transaction</a>を開き、データベースのオブジェクト(データ)を生成したり、操作したり、削除したりできます。このインターフェイスはデータベースのバージョンを取得したり、統合したりする唯一の方法を提供します。</p>
</div>
<div class="note">
 <p><strong>Note</strong>: Everything you do in IndexedDB always happens in the context of a <a href="/en-US/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB#gloss_transaction">transaction</a>, representing interactions with data in the database. All objects in IndexedDB — including object stores, indexes, and cursors — are tied to a particular transaction. Thus, you cannot execute commands, access data, or open anything outside of a transaction.</p>
</div>
<h2 id="メソッド">メソッド</h2>
<p>Inherits from: <a href="/en-US/docs/DOM/EventTarget">EventTarget</a></p>
<dl>
 <dt>
  {{domxref("IDBDatabase.close")}}</dt>
 <dd>
  即座に応答して、別スレッドでデータベースを閉じる。</dd>
 <dt>
  {{domxref("IDBDatabase.createObjectStore")}}</dt>
 <dd>
  新しくオブジェクトストアかインデックスを生成して返す。</dd>
 <dt>
  {{domxref("IDBDatabase.deleteObjectStore")}}</dt>
 <dd>
  参照しているインデックスがあったとしても、接続中のデータベースで与えられた名前のオブジェクトストアを削除する。</dd>
 <dt>
  {{domxref("IDBDatabase.transaction")}}</dt>
 <dd>
  オブジェクトストアにアクセスできる{{domxref("IDBTransaction.objectStore")}}メソッドを含むトランザクションオブジェクト ({{domxref("IDBTransaction")}})を即座に返す。別スレッドで実行される。</dd>
</dl>
<h2 id="プロパティ">プロパティ</h2>
<dl>
 <dt>
  {{domxref("IDBDatabase.name")}} {{readonlyInline}}</dt>
 <dd>
  接続しているデータベース名を含む{{ domxref("DOMString") }}</dd>
 <dt>
  {{domxref("IDBDatabase.version")}} {{readonlyInline}}</dt>
 <dd>
  接続しているデータベースのバージョンを含む<a href="/en-US/docs/NSPR_API_Reference/Long_Long_(64-bit)_Integers">64-bit integer</a>。データベースが初めて作られた場合、この属性は空文字である。</dd>
 <dt>
  {{domxref("IDBDatabase.objectStoreNames")}} {{readonlyInline}}</dt>
 <dd>
  接続しているデータベースの<a href="/en-US/docs/IndexedDB#gloss_object_store">object stores</a>名のリストを含む{{ domxref("DOMStringList") }}</dd>
</dl>
<h3 id="イベントハンドラ">イベントハンドラ</h3>
<dl>
 <dt>
  {{domxref("IDBDatabase.onabort")}}</dt>
 <dd>
  データベースの接続が中止された場合に発生する。</dd>
 <dt>
  {{domxref("IDBDatabase.onerror")}}</dt>
 <dd>
  データベースへの接続が失敗した場合に発生する。</dd>
 <dt>
  {{domxref("IDBDatabase.onversionchange")}}</dt>
 <dd>
  <p>データベースの構造が({{domxref("IDBOpenDBRequest.onupgradeneeded")}}<code>イベントで変更されるか、</code>{{domxref("IDBFactory.deleteDatabase")}} がどこかで(ほとんどの場合、同じコンピューターの他のウィンドウやタブで)要求された場合に発生します。これはversion change transaction (see {{domxref("IDBVersionChangeEvent")}})とは異なりますが、関連があります。</p>
 </dd>
</dl>
<h2 id="example" name="example"></h2>
<p>次のコードスニペットでは、データベースを非同期で開き({{domxref("IDBFactory")}})、成功と失敗の場合にイベントを登録し、アップグレードが必要な場合には、新しいオブジェクトストアを生成しています({{ domxref("IDBdatabase") }})。 完璧に動作する例は、 <a href="https://github.com/mdn/to-do-notifications/">To-do Notifications</a> app (<a href="http://mdn.github.io/to-do-notifications/">view example live</a>.)を見てください。</p>
<pre class="brush: js;highlight:[13,24,26,27,28,32]">// Let us open our database
  var DBOpenRequest = window.indexedDB.open("toDoList", 4);

  // these two event handlers act on the IDBDatabase object, when the database is opened successfully, or not
  DBOpenRequest.onerror = function(event) {
    note.innerHTML += '&lt;li&gt;Error loading database.&lt;/li&gt;';
  };

  DBOpenRequest.onsuccess = function(event) {
    note.innerHTML += '&lt;li&gt;Database initialised.&lt;/li&gt;';

    // store the result of opening the database in the db variable. This is used a lot later on
    db = DBOpenRequest.result;

    // Run the displayData() function to populate the task list with all the to-do list data already in the IDB
    displayData();
  };

  // This event handles the event whereby a new version of the database needs to be created
  // Either one has not been created before, or a new version number has been submitted via the
  // window.indexedDB.open line above

  DBOpenRequest.onupgradeneeded = function(event) {
    var db = event.target.result;

    db.onerror = function(event) {
      note.innerHTML += '&lt;li&gt;Error loading database.&lt;/li&gt;';
    };

    // Create an objectStore for this database using IDBDatabase.createObjectStore

    var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });

    // define what data items the objectStore will contain

    objectStore.createIndex("hours", "hours", { unique: false });
    objectStore.createIndex("minutes", "minutes", { unique: false });
    objectStore.createIndex("day", "day", { unique: false });
    objectStore.createIndex("month", "month", { unique: false });
    objectStore.createIndex("year", "year", { unique: false });

    objectStore.createIndex("notified", "notified", { unique: false });

    note.innerHTML += '&lt;li&gt;Object store created.&lt;/li&gt;';
  };</pre>
<p>次の行は、データベースでトランザクションを開いて、そしてオブジェクトストアを開いて、内側のデータを操作しています。</p>
<pre class="brush: js">    var objectStore = db.transaction('toDoList').objectStore('toDoList'); </pre>
<h2 id="仕様">仕様</h2>
<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Specification</th>
   <th scope="col">Status</th>
   <th scope="col">Comment</th>
  </tr>
  <tr>
   <td>{{SpecName('IndexedDB', '#idl-def-IDBDatabase', 'IDBDatabase')}}</td>
   <td>{{Spec2('IndexedDB')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
<div>
 {{CompatibilityTable}}</div>
<div id="compat-desktop">
 <table class="compat-table">
  <tbody>
   <tr>
    <th>Feature</th>
    <th>Chrome</th>
    <th>Firefox (Gecko)</th>
    <th>Internet Explorer</th>
    <th>Opera</th>
    <th>Safari (WebKit)</th>
   </tr>
   <tr>
    <td>Basic support</td>
    <td>23{{property_prefix("webkit")}}<br>
     24</td>
    <td>10 {{property_prefix("moz")}}<br>
     {{CompatGeckoDesktop("16.0")}}</td>
    <td>10, partial</td>
    <td>15</td>
    <td>7.1</td>
   </tr>
  </tbody>
 </table>
</div>
<div id="compat-mobile">
 <table class="compat-table">
  <tbody>
   <tr>
    <th>Feature</th>
    <th>Android</th>
    <th>Firefox Mobile (Gecko)</th>
    <th>Firefox OS</th>
    <th>IE Phone</th>
    <th>Opera Mobile</th>
    <th>Safari Mobile</th>
   </tr>
   <tr>
    <td>Basic support</td>
    <td>4.4</td>
    <td>{{CompatGeckoMobile("22.0")}}</td>
    <td>1.0.1</td>
    <td>10</td>
    <td>22</td>
    <td>{{CompatNo}}</td>
   </tr>
  </tbody>
 </table>
</div>
<h2 id="関連情報">関連情報</h2>
<ul>
 <li><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">Using IndexedDB</a></li>
 <li>Starting transactions: {{domxref("IDBDatabase")}}</li>
 <li>Using transactions: {{domxref("IDBTransaction")}}</li>
 <li>Setting a range of keys: {{domxref("IDBKeyRange")}}</li>
 <li>Retrieving and making changes to your data: {{domxref("IDBObjectStore")}}</li>
 <li>Using cursors: {{domxref("IDBCursor")}}</li>
 <li>Reference example: <a class="external" href="https://github.com/mdn/to-do-notifications/tree/gh-pages">To-do Notifications</a> (<a class="external" href="http://mdn.github.io/to-do-notifications/">view example live</a>.)</li>
</ul>
<p> </p>