Nut/README.md

4.0 KiB

Nut

Build result

Brancc name Icon
master Build Status
dev Build Status

Advanced, Powerful and easy to use ORM for Qt5

Features:

  • Easy to use
  • Support PosgtreSQL, MySQL, SQLite and Microsoft Sql Server
  • Automatically create and update database
  • IDE auto complete support, No hard-code nedded
  • Table join detect
  • Supported types:
Type Sqlite MySql Postgresql Ms Sql server
QBitArray BLOB VARBINARY BYTEA VARBINARY (MAX)
QByteArray BLOB BLOB BYTEA VARBINARY (MAX)
QChar NCHAR(1) CHAR(1) CHAR(1) CHAR(1)
QColor TEXT TEXT TEXT TEXT
QDate DATE DATE DATE DATE
QDateTime DATETIME DATETIME TIMESTAMP DATETIME
QJsonArray TEXT TEXT JSON TEXT
QJsonDocument TEXT TEXT JSON TEXT
QJsonObject TEXT TEXT JSON TEXT
QJsonValue TEXT TEXT JSON TEXT
QLine TEXT TEXT LINE TEXT
QLineF TEXT TEXT LINE TEXT
QPoint TEXT POINT POINT GEOMETRY
QPointF TEXT POINT POINT GEOMETRY
QPolygon TEXT POLYGON POLYGON TEXT
QPolygonF TEXT POLYGON POLYGON TEXT
QRect TEXT TEXT BOX TEXT
QRectF TEXT TEXT BOX TEXT
QSize TEXT TEXT TEXT TEXT
QSizeF TEXT TEXT TEXT TEXT
QString TEXT TEXT TEXT NVARCHAR(MAX)
QStringList TEXT1 TEXT TEXT[] TEXT
QTime TIME TIME TIME TIME
QUrl TEXT TEXT TEXT TEXT
QUuid TEXT VARCHAR(64) UUID UNIQUEIDENTIFIER
bool BOOLEAN BOOLEAN BOOLEAN BIT
char TINYINT CHAR(1) CHAR(1) CHAR(1)
double DOUBLE REAL REAL REAL
float FLOAT FLOAT FLOAT FLOAT(24)
int INT INT INTEGER INT
long MEDIUMINT BIGINT BIGINT BIGINT
qlonglong BIGINT BIGINT BIGINT BIGINT
qulonglong BIGINT UNSIGNED BIGINT BIGINT BIGINT
short SMALLINT SMALLINT SMALLINT SMALLINT
signed char TINYINT TINYINT SMALLINT TINYINT
uchar TINYINT UNSIGNED TINYINT SMALLINT TINYINT
uint INT UNSIGNED INT INTEGER INT
ulong MEDIUMINT UNSIGNED BIGINT BIGINT BIGINT
ushort SMALLINT UNSIGNED SMALLINT SMALLINT SMALLINT

Sample Codes

Read data from database:

auto q = db.posts()->createQuery();
q->setWhere(Post::idField() == postId);
auto posts = q->toList();
// now posts is a QList<Post*> contain all posts in
//  database that has id equal to postId variable
auto post = q->first();
// post is first row in database that its id is equal to postId

Adding to database:

Post *newPost = new Post;
newPost->setTitle("post title");

db.posts()->append(newPost);

for(int i = 0 ; i < 3; i++){
    Comment *comment = new Comment;
    comment->setMessage("comment #" + QString::number(i));

    newPost->comments()->append(comment);
}
db.saveChanges();

Modify database data:

auto q = db.posts()->createQuery();
q->setWhere(Post::idField() == postId);
Post *post = q->first();

if(post) {
    post->setTitle("new name");
    db.saveChanges();
} else {
    qWarning("No post found!");
}

Donate

Butcoin address: 1Dn1WHKkaxanXe4cTGDk4cFRRABxLUpEVj

Wallet addresst

For more information read Wiki.


  1. Using internal store/restore serialization ↩︎