c# 使用indexeddb例子
时间: 2023-07-11 21:32:16 浏览: 86
以下是一个使用IndexedDB存储和查询用户信息的C#示例代码:
```csharp
using System;
using System.Threading.Tasks;
using Microsoft.JSInterop;
public class UserInfo
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
public class IndexedDBExample
{
private readonly IJSRuntime _jsRuntime;
public IndexedDBExample(IJSRuntime jsRuntime)
{
_jsRuntime = jsRuntime;
}
public async Task AddUser(UserInfo user)
{
var db = await _jsRuntime.InvokeAsync<IDBDatabase>("openDatabase", "userDB", 1);
var transaction = db.transaction("users", "readwrite");
var store = transaction.objectStore("users");
var request = store.add(user);
await request.AsTask();
}
public async Task<UserInfo> GetUser(int id)
{
var db = await _jsRuntime.InvokeAsync<IDBDatabase>("openDatabase", "userDB", 1);
var transaction = db.transaction("users", "readonly");
var store = transaction.objectStore("users");
var request = store.get(id);
var result = await request.AsTask();
return result;
}
}
```
在这个示例中,我们定义了一个`UserInfo`类表示用户信息,然后实现了`AddUser`和`GetUser`方法用于添加和查询用户信息。使用`IJSRuntime`来调用JavaScript中的IndexedDB API。通过`openDatabase`方法打开指定名称和版本的数据库,然后使用`transaction`和`objectStore`来获取对象存储空间,并使用`add`和`get`方法来添加和查询数据。
需要注意的是,在使用IndexedDB时需要先在JavaScript中定义相应的数据库和对象存储空间,例如:
```javascript
const openDatabase = (name, version) => {
return new Promise((resolve, reject) => {
const request = indexedDB.open(name, version);
request.onupgradeneeded = (event) => {
const db = event.target.result;
const store = db.createObjectStore("users", { keyPath: "id" });
};
request.onsuccess = (event) => {
const db = event.target.result;
resolve(db);
};
request.onerror = (event) => {
reject(event.target.error);
};
});
};
```
这个函数用于打开指定名称和版本的数据库,并在升级时创建名为"users"的对象存储空间。在C#中调用时直接使用即可:
```csharp
var db = await _jsRuntime.InvokeAsync<IDBDatabase>("openDatabase", "userDB", 1);
```
该示例仅仅是一个简单的例子,IndexedDB还支持更多的高级功能,例如索引、事务等。需要根据实际需求来选择使用哪些功能。
阅读全文