以下は主にmysqlデータベースに対する操作ですが、他のデータベース操作も実際には同様です。
1.以下に示すように、QT + = sqlを.proファイルに追加します。
2.SQL関連のヘッダーファイルを追加します
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
3.データベースに接続します
qDebug()<<QSqlDatabase::drivers(); //查询支持的sql对象,下面调用的数据库实例QMYSQL就是从这里的结果确定的
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //数据库对象
//连接数据库
db.setHostName("192.168.0.1"); //数据库服务器IP
db.setPort(3306); //端口
db.setUserName("test"); //数据库用户名
db.setPassword("123456"); //数据库密码
db.setDatabaseName("test"); //使用哪个数据库
if( !db.open() ){ //数据库打开失败
QMessageBox::warning(this,"错误",db.lastError().text());
return;
}
4.データのクエリ
見つかったデータをテーブルウィジェットに配置します。これは直感的に見えます。
QStringList headerText;
headerText<<"权限"<<"姓名"<<"密码";
ui->tableWidget->setColumnCount(headerText.count());
for(int i = 0;i<headerText.count();i++)
{
ui->tableWidget->setHorizontalHeaderItem(i,new QTableWidgetItem(headerText.at(i)));
}
QSqlQuery query; //查询语句
query.exec("select * from user;");
qint32 rowNo = 0;
while(query.next())
{
QTableWidgetItem *item;
QStandardItem *sItem;
qDebug()<<query.value(0).toString()<<":"<<query.value(1).toString()<<":"<<query.value(2).toString()<<":"<<query.value(3).toString();
ui->tableWidget->insertRow(rowNo);
for(int i=0;i<3;i++)
{
item = new QTableWidgetItem(query.value(i+1).toString(),i);
ui->tableWidget->setItem(rowNo,i,item);
}
rowNo++;
}
クエリ結果を確認できます。
5.新しいデータ
QSqlQueryのqueryメソッドを呼び出すだけです。クエリエラーの場合は、lastError関数を使用して、コマンドが失敗した理由を読み取ることができます。
QSqlQuery query;
QString sqls = QString("insert into user values(%1,%2,%3,%4);")
.arg(11).arg(2).arg("'test1'").arg("'test1'");
qDebug()<<sqls;
if(query.exec(sqls))
{
qDebug()<<"成功";
}
else
{
qDebug()<<"失败";
qDebug()<<query.lastError();
}
6.データを削除します
QSqlQuery query;
//删除ID=11的用户
QString sqls = QString("delete from user where id = %1").arg(11);
qDebug()<<sqls;
if(query.exec(sqls))
{
qDebug()<<"成功";
}
else
{
qDebug()<<"失败";
qDebug()<<query.lastError();
}
7.データを変更します
QString sqls = QString("update user set username = %1 where id = %1;")
.arg("'user1'").arg(10);
qDebug()<<sqls;
if(query.exec(sqls))
{
qDebug()<<"成功";
}
else
{
qDebug()<<"失败";
qDebug()<<query.lastError();
}
テーブル操作などの他の操作はすべてSQLの入力とスプライシングの問題であるため、これ以上は説明しません。
8. QtがMySQLに接続すると、「QSqlDatabase:QMYSQLドライバーがロードされていません」というプロンプトが表示されます。これはライブラリファイルlibmysql.dllがない可能性があります。このファイルはmsyqlインストールディレクトリから見つけて、下のbinディレクトリに配置できます。以下のQTインストールディレクトリのコンパイラディレクトリ(「C:\ Qt \ Qt5.9.0 \ 5.9 \ mingw53_32 \ bin」など)
これでも機能しない場合は、インストールされているmysqlの桁がQTの桁と同じかどうかを確認してください。そうでない場合は、次のアドレスに移動し
ます。https://dev.mysql .com / downloads / connector / c /
mysql-connector-cをダウンロードし、libディレクトリでファイル「libmysql.dll」を見つけて、このファイルをQtにコピーします。 binディレクトリでQtCreatorを再起動すると、正しく実行されます。
つまり、プログラム実行環境下のlibmysql.dllファイルに対応するmysqlビット番号がQTビット番号と同じであることを確認してください。