제목에서 말씀 드렸듯이, 저는 지금 며칠 동안이 문제를 겪고 있습니다. 내 프로그램은 QtCreator의 디버그 모드에서 정상적으로 실행되지만 일단 릴리스 모드를 선택하면 SQL 드라이버가로드되지 않는 문제가 발생합니다 (Windows 10에서만 실행했습니다). 내 .pro 파일이 올바르게 작성되었다고 생각합니다 (QT + = SQL이 작성되었습니다).Qt sqlite 문제가 deployement에 있습니다 : 드라이버가로드되지 않았습니다.
- windeployqt.exe :
나는 내가 할 수있는 대부분의 일을 시도했습니다. Qt5Sql.dll
- 실행 폴더로 이동 또한 Qt는 설치 경로가 제공하는 모든 sqldrivers를 포함하는 실행 파일 폴더의 하위 폴더 sqldrivers에서
- 이동 플러그인 자신 또한 sqlite3.dll을 sqlite가 웹 사이트에서 제공하는 모두를 옮길 사용하여 시도 (하나씩 테스트 됨) 실행 가능 폴더와 sqldrivers 서브 폴더.
내가 말한 것처럼 배포 문제에서만 발생하므로 .pro 파일에 추가해야하는 것이 있는지 궁금합니다. Windows OS에 SQL 프로그램이 설치되어 있지 않습니다. 그게 제가 생각하기에 문제가 있다면, 제 프로그램이 sqldrivers 서브 폴더에서 제공되는 플러그인을 사용하도록 할 수 있는지 궁금합니다.
오류 :
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
QSqlDatabase: an instance of QCoreApplication is required for loading driver plugins
QSqlQuery::exec: database not open
편집 : 나는 그 문제를 해결 할 수 있었다. 이 문제는 제가 예상하지 못한 것으로부터 왔습니다. 나는 전역 변수를 사용하고 있었고 그것들 중 하나가 데이터베이스 였고 데이터베이스가 main.cpp (#include에 있음)의 첫 번째 줄 앞에로드 된 것처럼 보이는 오류를 다시 읽음으로써 깨달았다. 그래서 지금은 데이터베이스를 사용할 때마다 데이터베이스를 열고 닫는 방법을 사용하고 있습니다. 글로벌 데이터베이스를 선언 할 수있는 방법이 있습니까 (항상 열려 있어야합니다)? 나는 그것을 집중적으로 사용하고있다. 다른 곳에서
QSqlDatabase my_db = QSqlDatabase::addDatabase("QSQLITE");
my_db.setDatabaseName("my_db_name.sqlite");
if(my_db.open())
{
my_db.exec("create table person (id int primary key, "
"firstname varchar(20), lastname varchar(20))");
}
else
{
qDebug() << my_db.lastError().text();
}
그리고 :
감사합니다. 비록 내가 꽤 많은 함수가 필요했기 때문에 나는 내 데이터베이스에 내 자신의 클래스를 사용하고있다. 내 클래스에서이 함수를 구현할 것이다. 편집 : 이제는 당신이 그것을 언급, 나는 그들이 정적 이었는지 몰랐어, 내가 그것을 줄께 내가 당신에게 감사를 관리 할 수있을 것 같아! – Roukira