必要条件
Header: #include <QSqlDatabase>
qmake: QT += sql
可以通过 qDebug() << QSqlDatabase::drivers();
查看当前环境支持哪些数据库
连接数据库
bool connect(QSqlDatabase *db,const QString &dbName)
{
*db = QSqlDatabase::addDatabase("QSQLITE");
db->setDatabaseName(dbName);
if (!db->open()) {
qDebug() << "Database Error!";
return false;
}
return true;
}
新建表
QSqlQuery query(db);
// 新建表
query.exec("create table outnodes (sn INTEGER NOT NULL, outport INTEGER, maxsession INTEGER, \
ipAddress TEXT, macAddress TEXT, gateway TEXT, \
ipMode INTEGER, rows INTEGER, cols INTEGER, \
outHdmiMode INTEGER, outRes INTEGER)");
//向表中插入数据
query.exec("INSERT INTO outnodes (sn,outport, ipAddress,outRes) VALUES (0, 0,'192.168.10.250',100)");
删除表
query.exec("DROP TABLE outnodes");
删除项目
query.exec("DELETE FROM outnodes WHERE sn>30");
查询数据
query.prepare("SELECT * FROM outnodes WHERE sn = ?");
query.addBindValue(33);
if (!query.exec()) // 查询sn == 33的列
{
// 出错处理 ,得 #include <QSqlError>
qDebug() << query.lastError();
return false;
}
else
{
if( query.next() )
xxx = query.value(0).toInt();
}
// 获取项目名称对应的数组编号
int nameNo = query.record().indexOf("name");//获取"name"属性所在列的编号,列从左向右编号,最左边的编号为0
while( query.next() )
{
xxx = query.value(nameNo).toString();
}
sqlite查用语法
分页查询语句
如果查询表users
中第100~150条数据
Select * From users Limit 50 Offset 100;
以上语句表示从users
表获取数据,跳过100行,取50行
获取数据库中有多少数据(行数和列数)
query.exec("select * from users");
QSqlQueryModel *model = new QSqlQueryModel();
model->setQuery(query);
int nRecordCount = model->rowCount();//行数
int nColumnCount = model->columnCount();//列数
更新数据
query.prepare("UPDATE 表名 SET :name = :namename WHERE :id = :number");
query.bindValue(":name", "姓名");
query.bindValue(":namename", "张三");
query.bindValue(":id", "id");
query.bindValue(":number", 30);
// 将 id=30处的 姓名项目改为 张三
if (!query.exec())
// 错误处理
正文完