1.連接配接
可以參考部落格
2.常用操作執行個體
這裡都是做MaoExpress(軟體設計課作業)的後端代碼片段
需要注意
在操作時記住用Navicat觀察伺服器資料庫上的資料是否更新成功。
2.1查詢
查詢userID是否與已有ID重複
QSqlQuery result = db.exec(" select * from SuperUserTable");
QString userIdValue;
QString pswValue;
QString nameValue;
while(result.next()){
userIdValue=result.value("userID").toString();
nameValue=result.value("_name").toString();
pswValue=result.value("_password").toString();
if(userID==userIdValue){
isRedundant=true;
}/*if(userID.toInt()==userIdValue)*/
}/*while(result.next())*/
2.2增加
下面這種給準備prepare的SQL語句設定幾個參數的情況,除了下面給出的qsQuery.bindValue()
還有另一種寫法 qsQuery.addbindValue()
參考部落格
QString strSqlText("insert into StationUserTable (userId,_name,_password,siteId)\
values (:userId,:_name,:_password,:siteId)");
qsQuery.prepare(strSqlText);
qsQuery.bindValue(":userId",userID);
qsQuery.bindValue(":_name",name);
qsQuery.bindValue(":_password",pw);
qsQuery.bindValue(":siteId",userSiteId);
bool result_successed =qsQuery.exec();
if(result_successed){
qDebug()<<"插入使用者資訊成功";
}else{
qDebug()<<"插入使用者資訊失敗!";
qDebug()<<"error open database because"<<db.lastError().text();
}
2.3更新
這裡有一個修改昵稱的例子,這裡有一點要注意,如果字元串有中文資訊,那麼它的兩邊的單引号不能少。
其次,若拼接的字元串為其它類型(例如int)轉QString類型,會出現不報錯但修改失敗的情況
QSqlQuery query(db);
bool res = query.exec(QString("UPDATE "+ whichTableToFind + " SET _name='" + newName + "' where userId='" + globalUserId+"'" ));
if(res){
qDebug() << "修改_name成功";
globalUserName = newName;
}
else{
qDebug()<<"table"<<whichTableToFind<<"newname"<<newName<<query.lastError();
qDebug() << "修改失敗"<<db.lastError().text();
}
(下為摘抄)
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("UPDATE UserInput SET AssessDate = :AssessDate \
WHERE ID = :ID");
qsQuery.prepare(strSqlText);
qsQuery.bindValue(":AssessDate", userInputData.m_assessDate);
qsQuery.bindValue(":ID", id);
qsQuery.exec();
CommitDB(qsQuery);
2.4删除
QSqlQuery qsQuery = QSqlQuery(db);
QString strSqlText("DELETE FROM UserInput WHERE ID = :ID");
qsQuery.prepare(strSqlText);
qsQuery.bindValue(":ID", id);
qsQuery.exec();
CommitDB(qsQuery);
3.補充
3.1 exec() 中的字元串是所執行的SQL語句,支援運算符 ‘+’
比如
QString whichTableToFind="xxxtable"
QSqlQuery result = db.exec(" select siteId from " + whichTableToFind); //查詢是否為站點管理者
resSite = result.value("siteId").toString();