当前方式仅支持QT的封装库QSqlQuery来调用。
先打开数据库,然后将QSqlQuery和QSqlDatabase绑定。
QSqlDatabase db;
db = QSqlDatabase::addDatabase("QSQLITE","test-connect");
QString dbpath = QApplication::applicationDirPath() + "/test.db";
db.setDatabaseName(dbpath);
db.setPassword("123456");
db.setHostName("127.0.0.1");
db.setUserName("CSDN");
if (!db.open()){
perror(db.lastError().text().toUtf8().data());
return false;
}
QSqlQuery query(db);
QSqlQuery被绑定后,就能使用sql指令的增删改查了。sql教程
// 插入方式一:直接插入数据
query.exec("insert into tableName values(1, '小明')");
// 插入方式二:使用命名占位符的[命名]绑定
query.prepare("insert into tableName(id, name) values (:id, :name)");
query.bindValue(":id", 2);
query.bindValue(":name", "张三");
query.exec();
// 插入方式三:使用命名占位符的[位置]绑定
query.prepare("insert into tableName(id, name) values (:id, :name)");
query.bindValue(0, 3);
query.bindValue(1, "李四");
query.exec();
// 插入方式四:使用位置占位符绑定值(版本 1)
query.prepare("insert into tableName(id, name) values (?, ?)");
query.bindValue(0, 4);
query.bindValue(1, "王五");
query.exec();
// 插入方式五:使用位置占位符绑定值(版本 2)
query.prepare("insert into tableName(id, name) values (?, ?)");
query.addBindValue(5); // 使用位置值绑定时,将值val添加到值列表中。addBindValue()调用的顺序决定了在准备好的查询中将值绑定到哪个占位符
query.addBindValue("老六");
query.exec();
当然像更新,删除,查看都是一样的,如下各举一个例子,其它四种方法跟插入的写法一样
更新
query.prepare("update tableName set name= ? where id= ?") ;
query.addBindValue("老溜");
query.addBindValue("5");
query.exec();
删除
query.prepare("delete from tableName where id= ?") ;
query.addBindValue("5");
query.exec();
查看
query.prepare("select * from tableName where id= ?") ;
query.addBindValue("5");
query.exec();