Skip to content

Instantly share code, notes, and snippets.

@kungfux
Last active March 24, 2017 10:14
Show Gist options
  • Select an option

  • Save kungfux/b72b014547ccd0383bfd7543601d6a6f to your computer and use it in GitHub Desktop.

Select an option

Save kungfux/b72b014547ccd0383bfd7543601d6a6f to your computer and use it in GitHub Desktop.
XDatabase usage examples
// https://github.com/kungfux/xdatabase
using System;
using XDatabase;
namespace Examples
{
public class Test
{
private const string _connectionString = "Data Source=db.sqlite;";
// Create an instance that points to a proper database type
public void Init()
{
var xQuery1 = new XQuerySqlite();
var xQuery2 = new XQueryMySql();
var xQuery3 = new XQueryOleDb();
}
// Select data as Table, Column, Row or a single Cell
public void SelectData()
{
var xQuery = new XQuerySqlite(_connectionString);
var selectTable = xQuery.SelectTable("select * from table;");
var selectColumn = xQuery.SelectColumn("select username from users;");
var selectRow = xQuery.SelectRow("select * from users limit 1;");
var selectCellAsString = xQuery.SelectCellAs<string>("select username from users where login='admin';");
// Administrator
var selectCellAsNum = xQuery.SelectCellAs<long>("select failedAttempts from users where login='admin';");
// 3
var selectCellAsDouble = xQuery.SelectCellAs<double>("select weight from users where login='admin';");
// 1.23
}
// Use arguments in sql
public void Arguments()
{
var xQuery = new XQuerySqlite(_connectionString);
var result = xQuery.SelectTable("select * from users where login=@login;",
xQuery.AddParameter("@login", "admin"));
}
// Create, insert, update and delete
public void ChangeData()
{
var xQuery = new XQuerySqlite(_connectionString);
xQuery.Create("create table users (id int primary key autoincrement, login varchar(255));");
xQuery.Insert("insert into users (login) values ('admin');");
xQuery.Update("update users set login='admin' where login='admina';");
xQuery.Delete("delete from users where login='admin';");
}
// Check result of operation
public void Result()
{
var xQuery = new XQuerySqlite(_connectionString);
var result = xQuery.Update("update users set username=@username where login=@login",
xQuery.AddParameter("@username", "Administrator"),
xQuery.AddParameter("@login", "admin")
);
if (result >= XResult.ChangesApplied)
Console.WriteLine("Updated successfully!");
}
// Transactions
public void Transaction()
{
var xQuery = new XQuerySqlite(_connectionString);
var isInterrupted = false;
xQuery.BeginTransaction();
for (var i = 0; i < 100; i++)
{
var result = xQuery.Insert($"insert into users (username) values ('test-{i}');");
if (!result)
{
isInterrupted = false;
xQuery.RollbackTransaction();
break;
}
}
if (!isInterrupted)
{
xQuery.CommitTransaction();
}
}
// Work with binary data and images
public void Binary()
{
var xQuery = new XQuerySqlite(_connectionString);
// insert binary data into a cell
var binData = new byte[] { 1, 0, 1, 1, 0, 1, 1, 0 };
xQuery.InsertBinaryIntoCell(binData, "update users set photo=@photo where login='admin';", "@photo");
// select binary data from cell
var binDataNew = xQuery.SelectCellAs<byte[]>("select photo from users where login='admin';");
// insert file into a cell
var image = "C:\\photo.png";
xQuery.InsertFileIntoCell(image, "update users set document=@doc where login='admin';", "@doc");
// select image from database
var imageNew = xQuery.SelectBinaryAsImage("select photo from users where login='admin';");
// select binary and save
xQuery.SelectBinaryAndSave("D:\image.png", "select photo from users where login='admin';");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment