1. 程式人生 > >linux Qt MYSQL的使用

linux Qt MYSQL的使用

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”);