sql >> Database >  >> RDS >> Oracle

Qt-toepassing crasht bij gebruik van ODBC-stuurprogramma (macOS)

Stappen om QODBC op Mac OS ((Seirra) naar MSSQL of een andere ODBC DB te activeren/testen:

Symptoom 1:Qt Run (Debug) applicatie crasht (programma onverwacht beëindigd/crasht). Symptoom 2:Qt Creator met vooraf gebouwde Qt-pakketten (MaintenanceTool).

Symptoom 3:freeTDS-stuurprogramma (libtdsodbc.so) ontbreekt na installatie van freeTDS-pakketten.

Symptoom 4:Qt gebouwd/geconfigureerd voor of met ontbrekende unixODBC.

  1. Download en installeer unixODBC (moet worden gedaan voordat freeTDS wordt geïnstalleerd )(www.unixODBC.org ) / (Stuurprogramma's) / (unixODBC-2.3.4.tar.gz)

unzip en untar de pakketten.

./configure --prefix=/usr/local/unixODBC (zorg ervoor dat je OF sudo kunt schrijven)

make sudo make istall

  1. Download en installeer freeTDS:(http://www.freetds.org/ ) / ( Snelle links) / (Nieuwste versies) / (Stabiele uitgave)

untar/unzip het pakket.

./configure --prefix=/usr/local/freeTDS --with-unixodbc=/usr/local/unixODBC/

make

sudo make istall

Opmerking:--with-unixodbc zorgt ervoor dat het stuurprogramma (libtdsodbc.so) wordt geïnstalleerd.

  1. Helaas moet mogelijk de ODBC-plug-in op Qt opnieuw worden opgebouwd:

    • Als u de vooraf gebouwde Qt-bibliotheken gebruikt, moet u bronnen downloaden met MaintenanceTool ($QTDIR/MaintenanceTool.app)

    • Vertel qmake waar de unixODBC-headerbestanden en gedeelde bibliotheken kunnen worden gevonden (hier wordt aangenomen dat unixODBC is geïnstalleerd in /usr/local/unixODBC) en voer make:uit:

    cd $QTDIR/qtbase/src/plugins/sqldrivers/odbc

    mijn geval:cd /usr/local/Qt/5.9.1/Src/qtbase/src/plugins/sqldrivers/odbc

    qmake "INCLUDEPATH+=/usr/local/unixODBC/include" "LIBS+=-L/usr/local/unixODBC/lib -lodbc"

    make

als dat goed gaat:je krijgt de QODBC nieuwe libs:

cd ../plugins/sqldrivers/

kopieer de nieuwe pakketten bijvoorbeeld naar:

/usr/local/Qt/5.9.1/clang_64/plugins/sqldrivers/
  1. Configureer /etc/local/unixODBC/etc/odbc.ini (mogelijk hebt u root-rechten nodig om te veranderen)

(Het is niet nodig om freeTDS te configureren):

  • (welke poort? welke versie -> Uitvoeren/usr/local/freeTDS/bin/tsql -LH 192.168.x.x
  • Vermelding maken/wijzigen in /usr/local/unixODBC/etc/odbc.ini

    [MYDSN]

    Driver = /usr/local/freeTDS/lib/libtdsodbc.0.so

    Server = 192.168.x.x

    Port = 51271

    1. in Qt-project:

    QSqlDatabase mydb = QSqlDatabase::addDatabase("QODBC");

    mydb.setDatabaseName("MYDSN")

    mydb.setUserName("name on Database");

    mydb.setPassword(" password on Database");




  1. Oracle-functie om een ​​tabel bij te werken, als de record null is, dan INSERT

  2. Wat gebeurt er bij het gebruik van meerdere CASE ... WHEN-instructies in dezelfde SQL-query?

  3. Back-up van database(s) met behulp van query zonder mysqldump

  4. Hoeveel tekens in varchar(max)?