UWP

最近、WindowsとVisual Studioをインストールし直したんだが、UWPの新規プロジェクトを作成しようとすると「ターゲットに適したSDKが見つかりません」って出て作れなくなった(^^;)
調べてみると、最新のWindows10 SDKのみインストールしてるときに起こるようで、一個古いのも入れると直った。 
2017-03-14 (1)
 
このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

[UWP] スレッドにも書いたが、別エントリーでも書いとく。

Dispatcher.RunAsync()を使う。こんな感じ

                await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                {
                    button.IsEnabled = true;
                });



このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

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":"山田花子"}]



このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

SQLite Download PageからUniversal Windows Platformのvsixファイルをダウンロードしてインストールする。

プロジェクトを開いて、参照マネージャーで
SQLite for Universal Windows Platform
Visual C++ 2015 for Universal Windows Platform Apps
を選択する。

001

NuGetパッケージマネージャーを起動して、SQLite.Net-PCLを検索してインストールする。

002

[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; }
    }


このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

↑このページのトップヘ