Installation
  • Download DatabasesCx.vsix and double click to install. It is better to close MS Visual Studio first.

Database Usage

  • Create Database
C#
            using DatabasesCx;

            String pathName = Windows.Storage.ApplicationData.Current.LocalFolder.Path + "\\myDb.db";
            SQLiteCx mySql = new SQLiteCx(pathName);

C++
            using namespace DatabasesCx;

            String^ pathName = Windows::Storage::ApplicationData::Current->LocalFolder->Path + "\\myDb.db";
            SQLiteCx^ mySql = ref new DatabasesCx::SQLiteCx(pathName);

  • Create Table
C#
            await mySql.ExecuteAsync("create table if not exists mytable (id int, name text, salary real, file blob)");

C++
           create_task(mySql->ExecuteAsync(L"create table if not exists mytable (id int, name text, salary real, file blob)"));

  • Retrieve Data
C#
            ObservableCollection<RowCx> rowsOut = new ObservableCollection<RowCx>();;
            await mySql.GetAsync("select rowid, id, name, salary, file from mytable", rowsOut);
            itemsViewSource.Source = rowsOut; // Data Binding

C++
            auto rowsOut = ref new Vector<RowCx^>();
            create_task(mySql->GetAsync(L"select rowid, id, name, salary, file from mytable", rowsOut));
            itemsViewSource->Source = rowsOut; // Data Binding
  • Insert Data
C#
            IList<byte> buf = new List<byte> { 0x00, 0x01, 0x02, 0x03, 0x04 };

            IList<RowCx> myList = new List<RowCx> {
                new RowCx( new List<ColumnCx>{ new ColumnCx("id", 0L), new ColumnCx("name", "Poom Malakul"), new ColumnCx("salary", 2500.23), new ColumnCx("file", buf)}),
                new RowCx( new List<ColumnCx>{ new ColumnCx("id", 2L), new ColumnCx("name", "John Malakul"), new ColumnCx("salary", 3500.23), new ColumnCx("file", buf)}),
                new RowCx( new List<ColumnCx>{ new ColumnCx("id", 3L), new ColumnCx("name", null), new ColumnCx("salary", 4500.23), new ColumnCx("file", null)})
            };

            int count = await mySql.SetAsync("insert into mytable (id, name, salary, file ) values (?1,?2,?3,?4)", myList);

C++
            Vector<unsigned char>^ buf = ref new Vector<unsigned char>{ 0x00, 0x01, 0x02, 0x03, 0x04 };

            Vector<RowCx^>^ rows = ref new Vector<RowCx^> {
                    ref new RowCx( ref new Vector<ColumnCx^>{ ref new ColumnCx("id", safe_cast<Object^>(0LL)), ref new ColumnCx("name", "Poom Malakul"), ref                             new ColumnCx("salary", 2500.23), ref new ColumnCx("file", std::move(buf)) } ),
                    ref new RowCx( ref new Vector<ColumnCx^>{ ref new ColumnCx("id", 2LL), ref new ColumnCx("name", "John Malakul"), ref new ColumnCx("salary",                         4500.23), ref new ColumnCx("file", std::move(buf)) } ),
                    ref new RowCx( ref new Vector<ColumnCx^>{ ref new ColumnCx("id", 3LL), ref new ColumnCx("name", nullptr), ref new ColumnCx("salary",                                     4500.23), ref new ColumnCx("file", nullptr) } )
                };

            task<int> insertTask = create_task(mySql->SetAsync(L"insert into mytable (id, name, salary, file ) values (?1,?2,?3,?4)", rows));

  • Update Data
C#
             IList<RowCx> rows = new List<RowCx>{ _row };
            string command = "update mytable set id=?1, name=?2, salary=?3, mimetype=?4, file=?5 where rowid=" + _rowid;
             int count = await mySql.SetAsync(command, rows);

C++
            Vector<RowCx^>^    rows = ref new Vector<RowCx^>{ _row };
            String^ command = "update mytable set id=?1, name=?2, salary=?3, mimetype=?4, file=?5 where rowid=" + _rowid;
            task<int> updateTask = create_task(mySql->SetAsync(command, rows));

  • Delete Data
C#
             await mySql.ExecuteAsync("delete from mytable where rowid=" + rowid);

C++
            create_task(mySql->ExecuteAsync(L"delete from mytable where rowid=" + rowid));