最近、WindowsとVisual Studioをインストールし直したんだが、UWPの新規プロジェクトを作成しようとすると「ターゲットに適したSDKが見つかりません」って出て作れなくなった(^^;)
調べてみると、最新のWindows10 SDKのみインストールしてるときに起こるようで、一個古いのも入れると直った。

調べてみると、最新のWindows10 SDKのみインストールしてるときに起こるようで、一個古いのも入れると直った。

-->
[UWP] スレッドにも書いたが、別エントリーでも書いとく。
Dispatcher.RunAsync()を使う。こんな感じ
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
button.IsEnabled = true;
});
JSON(文字列) => オブジェクトに変換する。
[ { "name":"山田太郎", "age":22 }, { "name\":"山田花子", "age":24 } ]
こんなやつを扱う。
次のusingをソースに追加しておく。
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.Diagnostics;
データのクラスを用意する。
[DataContract]
public class Person
{
[DataMember(Name="name")]
public string Name { get; set; }
[DataMember(Name="age")]
public int Age { get; set; }
}
変換する処理はこんな感じだ。
// JSON(文字列)を用意
var jsonStr = "[ { \"name\":\"山田太郎\", \"age\":22 }, { \"name\":\"山田花子\", \"age\":24 } ]";
// 文字列をバイト配列にしてメモリーストリームに追加する。
using (var memStream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(jsonStr)))
{
// シリアライザーを用意
var serializer = new DataContractJsonSerializer(typeof(List<Person>));
// メモリストリームから読み込んでオブジェクトに変換する。
var jsonObject = serializer.ReadObject(memStream) as List<Person>;
// 内容を表示
jsonObject.ForEach(person => Debug.WriteLine("{0},{1}", person.Name, person.Age));
}
実行すると、次のように出力される。
山田太郎,22
山田花子,24
JSONオブジェクト => JSON(文字列)に変換する。
// JSONオブジェクトを用意
var jsonObject = new List<Person>()
{
new Person() { Name="山田太郎", Age=22 },
new Person() { Name="山田花子", Age=24 }
};
// メモリストリームを用意
using (var memStream = new MemoryStream())
{
// シリアライザーを用意
var serializer = new DataContractJsonSerializer(typeof(List<Person>));
// JSONオブジェクトを変換してメモリーストリームに書き込む
serializer.WriteObject(memStream, jsonObject);
// メモリーストリームの内容を文字列に変換する。
var jsonStr = System.Text.Encoding.UTF8.GetString(memStream.ToArray());
// 表示する
Debug.WriteLine(jsonStr);
}
実行すると、次のように出力される。
[{"age":22,"name":"山田太郎"},{"age":24,"name":"山田花子"}]
SQLite Download PageからUniversal Windows Platformのvsixファイルをダウンロードしてインストールする。
プロジェクトを開いて、参照マネージャーで
SQLite for Universal Windows Platform
Visual C++ 2015 for Universal Windows Platform Apps
を選択する。
NuGetパッケージマネージャーを起動して、SQLite.Net-PCLを検索してインストールする。
[Java] SQLiteを使う。と同じことをやってみる。
ソースの頭の方に
using SQLite.Net;
using SQLite.Net.Attributes;
using SQLite.Net.Platform.WinRT;
を追加する。
作るテーブルのクラスを用意する。
public class test
{
[PrimaryKey]
public int id { get; set; }
public string name { get; set; }
}
テーブル作ったり、データ追加したり、検索したりするのはこんな感じになる。
var dbFilename = Path.Combine(ApplicationData.Current.TemporaryFolder.Path, "test.db");
Debug.WriteLine(dbFilename);
// データベースをオープン
using (var conn = new SQLiteConnection(new SQLitePlatformWinRT(), dbFilename))
{
// テーブルを作成
conn.CreateTable<test>();
// データを登録
for(int i = 0; i < 10; i++)
{
conn.Insert(new test()
{
id = i,
name = "hoge" + i
});
}
// データを検索
var sql = "SELECT * FROM test";
var list = conn.Query<test>(sql);
foreach(var d in list)
{
Debug.WriteLine("{0},{1}", d.id, d.name);
}
}
(追記)
テーブルのクラス名と実際のテーブル名が違う場合は、アトリビュートTableで実際のテーブル名を指定する。プロパティ名とテーブルのカラム名が違う場合はColumnを指定する。
こんな感じだ。
[Table("test")]
public class Test
{
[PrimaryKey, Column("id")]
public int Id { get; set; }
[Column("name")]
public string Name { get; set; }
}
適当に落書き帳みたいなのを作ってみた。(適当すぎるので注意w)
続きを読む