0

データベースへの接続を作成し、データベースへのクエリを挿入/削除/作成しようとしています。私はSQLを比較的よく知っていますが、Qtで頭を包むことができないようです。私は Delphi でプログラミングをしていました。

これまでの私のコードは次のとおりです。

QSqlDatabase db;
db.addDatabase("QSQLITE");
db.setHostName( "localhost" ); //I don't know if i should include this the database is in the same directory as my program
db.setDatabaseName( "Xmato.odb" );
db.setUserName( "" ); //There is no username
db.setPassword( "" ); //There is no password
db.open();
db.prepare("SELECT * FROM Members");
db.exec();

これを .pro ファイルに追加しました。

QT += sql;

私のメインファイルに含まれているQtSql。

このコードを実行すると、次のエラーが表示されます。

QSqlQuery::prepare: database not open

どんなアイデアでも大歓迎です。

PS: Linux Ubuntu 12.04 で c++ を使用し、LibreOffice Base を使用してデータベースを作成しました。

4

3 に答える 3

2

少しグーグルした後、openoffice libreの内部データベースはHSQLDBを使用しています(Javaの自然な選択)。 ここでは HSQLDB について簡単に説明します。

openlibre ベースの一部のバージョンは、外部データベースにも接続できるようです。 C++、特に Qt にアクセスしやすいものをセットアップすることをお勧めします。

デフォルトでは、ODBC や SQLite などの少数のドライバーのみが含まれています。

つまり、使用しているデータベースによっては、追加のソース コード (またはパッケージ) を取得し、プラグイン/dll/so をコンパイルする必要がある場合があります。ライブラリは、QtSql モジュールによって動的に (実行時に) ロードされます。mysql driversでこれに遭遇しました。

すべてのセットアップが完了したら、addDatabase への呼び出しは、使用しているデータベースの種類と一致する必要があります。

QSqlDatabase::addDatabase( "QODBC" );  // For something like MSSQL
QSqlDatabase::addDatabase( "QSQLITE" );  // For SQLite
QSqlDatabase::addDatabase( "QMYSQL" );  // For MySQL

個人的には、単にこれをやっているだけなら、迅速で簡単なデータベースは SQLITE です。 データベースへの GUI を提供する Mozilla Firefox 用のプラグイン/拡張機能をダウンロードすることもできます。

于 2013-06-21T16:14:37.057 に答える
0

ドライバがロードされていません

QSQLITE ドライバーが必要です。

db.drivers() は、利用可能なすべてのデータベース ドライバーのリストを返します。

Ubuntu 12.04 では、sqlite のドライバーはlibqt4-sql-sqliteという名前のパッケージに含まれています。

しかし: odbsqlite データベースですか??

于 2013-06-21T15:12:18.700 に答える