MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它支持多種編碼格式,其中包括UTF8編碼。UTF8編碼是一種能夠支持多種語言的編碼格式,它使用變長的字節(jié)數(shù)來表示不同的字符。
在與MySQL連接的時(shí)候,我們需要指定使用UTF8編碼才能保證支持多種語言的數(shù)據(jù)能夠被正確地存儲(chǔ)和讀取。使用QT5編寫的程序,也可以很方便地實(shí)現(xiàn)與MySQL的連接和數(shù)據(jù)操作。
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setDatabaseName("mydb"); db.setUserName("username"); db.setPassword("password"); db.setPort(3306); db.setConnectOptions("MYSQL_OPT_CONNECT_TIMEOUT=2"); db.setConnectOptions("MYSQL_OPT_READ_TIMEOUT=2"); db.setConnectOptions("MYSQL_OPT_WRITE_TIMEOUT=2"); db.setConnectOptions("MYSQL_OPT_RECONNECT=1"); db.setConnectOptions("MYSQL_OPT_CHARSET_NAME=utf8mb4"); if(!db.open()) { qDebug()<< "Failed to connect database"<< db.lastError().text(); return -1; } else { qDebug()<< "Connect to database successfully!"; }
上述代碼示例演示了如何在QT5中連接MySQL,并設(shè)置UTF8編碼。其中,我們使用addDatabase函數(shù)創(chuàng)建了一個(gè)MySQL數(shù)據(jù)庫連接實(shí)例。setHostName、setDatabaseName、setUserName以及setPassword函數(shù)用來設(shè)置連接數(shù)據(jù)庫需要的相關(guān)參數(shù)。setPort函數(shù)則用來指定連接使用的端口號(hào)。setConnectOptions函數(shù)用來設(shè)置MySQL連接選項(xiàng)。最后一行設(shè)置MySQL編碼為utf8mb4編碼,保證能夠正確地存儲(chǔ)和讀取多語言數(shù)據(jù)。
在程序中,還可以通過QSqlQuery對(duì)象實(shí)現(xiàn)對(duì)MySQL的數(shù)據(jù)操作。例如:
QSqlQuery query; query.prepare("INSERT INTO mytable (name, age, address) VALUES (?, ?, ?)"); query.addBindValue("張三"); query.addBindValue(18); query.addBindValue("中國"); if(!query.exec()) { qDebug()<< "Failed to insert data"<< query.lastError().text(); }
上述代碼示例演示了如何實(shí)現(xiàn)向mytable表中插入一條新數(shù)據(jù)的操作。其中,我們使用prepare函數(shù)來預(yù)編譯SQL語句。addBindValue函數(shù)則用來綁定預(yù)編譯語句中的占位符,以此來替換實(shí)際的數(shù)據(jù)。最后,如果操作失敗,我們可以通過lastError函數(shù)來獲取錯(cuò)誤信息。