linux Qt MYSQL的使用
阿新 • • 發佈:2018-11-10
1、安裝mysql
sudo apt-get install mysql-server
安裝完成時會提示輸入管理員密碼和重複密碼。
2、Qt專案檔案中新增
QT += sql
3、程式碼
連線資料庫:
#include <QSqlDatabase> #include <QSqlQuery> //connect mysql-server QSqlDatabase d = QSqlDatabase::addDatabase("QMYSQL"); //載入mysql驅動,這個字串是固定的 d.setHostName("127.0.0.1"); d.setDatabaseName("Marrage"); //資料庫名稱 d.setPort(3306); //資料庫埠,如果沒有更改/etc/mysql/my.cnf就不用改 d.setUserName("root"); d.setPassword("root"); if(d.open()) cout<<"Hi mysql!連線"<<endl; else cout<<"失敗"<<endl; qDebug()<<QSqlDatabase::drivers()<<endl;
查詢資料庫:
這裡核心類是QSqlQuery,QSqlQuery下的exec方法是執行sql語句的方法(這裡執行語句可以不用帶mysql的分號),返回值為bool型,用來判斷是否正確執行。
query.seek(-1); query.exec("select * from Iphone where CustomName='YuA'"); query.size(); query.seek(0); QSqlRecord record = query.record(); //注意:這裡需要先seek到某一項 QString id = record.value("CustomName").toString(); QString year = record.value("born_year").toString(); qDebug()<<"name:"<<id << " born_year:" << year;
另一種查詢:
while(sql_query.next()) { intid=sql_query.value("id").toInt(); qDebug()<<"id:"<<id; QStringname=sql_query.value("name").toString(); qDebug()<<"name:"<<name; intsalary=sql_query.value("slary").toInt(); qDebug()<<"salary:"<<salary; intage=sql_query.value("age").toInt(); qDebug()<<"age:"<<age; }
改資料項:
A、多項插入:
方法一:
“INSERT INTO Table_Name (item1,item2,item3...) VALUES(?,?,?...)”
方法一:
“INSERT INTO Table_Name(item1,item2,item3...) VALUES (:id,:name,:etc...)”
void bindValue(const QString &placeholder,const QVariant &val,QSql::ParamTypeparamType=QSql::In);
void bindValue(int pos,const QVariant &val,QSql::ParamTypeparamType=QSql::In);
插入例項:
//方法一:
#if 0
query.prepare("insert into Iphone(CustomName, male, born_year, age, submission_date) values(?,?,?,?,?)");
query.addBindValue("LY");
query.addBindValue("Yes");
query.addBindValue("2001-01-01");
query.addBindValue(25);
query.addBindValue("2018-08-30");
#endif
//方法一:
query.prepare("insert into Iphone(CustomName, male, born_year, age, submission_date)"
"values(:CustomName, :male, :born_year, :age, :submission_date)");
query.bindValue(":CustomName", "LH");
query.bindValue(":male", "Yes");
query.bindValue(":born_year", "2001-08-02");
query.bindValue(":age", "30");
query.bindValue(":submission_date", "2018-08-30");
更新:
query.prepare(“UPDATE Table_Name SET item1= ?,item2 =? WHERE id = ?”);
或者
query.prepare("UPDATEPersonsSETage=:age,name=:hahaWHEREid=:hehe");
刪除:
query.prepare(“DELETE FROM Table_Name Where item = ?”);
或者
query.prepare(“DELETE FROM Table_Name Where item = :item”);