Modified:
MYSQLPlus/MYSQLPlusLib/MStatement.cpp
MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
Log:
Modified: MYSQLPlus/MYSQLPlusLib/MStatement.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusLib/MStatement.cpp 2006-05-13 18:22:29 UTC (rev 230)
+++ MYSQLPlus/MYSQLPlusLib/MStatement.cpp 2006-05-13 20:57:13 UTC (rev 231)
@@ -39,8 +39,6 @@
{
MYODBCDbgEnter();
- Q_ASSERT( getState() > STATE_S1 );
-
/* a result may try to modify our descriptors on its way out so delete it before
descriptors */
if ( pResult )
delete pResult;
Modified: MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp
===================================================================
--- MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp 2006-05-13 18:22:29 UTC (rev 230)
+++ MYSQLPlus/MYSQLPlusTest/MYSQLPlusTest.cpp 2006-05-13 20:57:13 UTC (rev 231)
@@ -8,19 +8,29 @@
class MYSQLPlusTest : public QObject
{
Q_OBJECT
-public:
+ public:
MYSQLPlusTest();
~MYSQLPlusTest();
- QFile fileDebugOut;
+private:
+ QFile fileDebugOut;
+ MEnvironment environment;
+ MConnection * pConnection;
+
private slots:
- void connection();
+ void doConnectDirect();
+ void doConnect();
+ void doDropTable();
+ void doCreateTable();
+ void doInsert();
+ void doSelect();
+ void doDisconnect();
};
MYSQLPlusTest::MYSQLPlusTest()
{
fileDebugOut.setFileName( "MYSQLPlusTest.txt" );
- if ( fileDebugOut.open( QFile::WriteOnly | QFile::Truncate ) )
+ if ( fileDebugOut.open( QFile::WriteOnly | QFile::Truncate ) )
{
MYODBCDbgInit( &fileDebugOut );
}
@@ -34,27 +44,120 @@
{
MYODBCDbgFini();
fileDebugOut.close();
+
+ /* MEnvironment cleans up its child objects (MConnection(s) for example)
automagically. */
}
-void MYSQLPlusTest::connection()
+/*!
+ \brief Connect without using any ODBC system information.
+*/
+void MYSQLPlusTest::doConnectDirect()
{
- MEnvironment * pEnvironment = new MEnvironment();
- MConnection * pConnection = new MConnection( pEnvironment );
+ MEnvironment * pEnvironment = new MEnvironment();
+ MConnection * pConnection = new MConnection( &environment );
MYODBCInsDataSource datasource;
- datasource.setSERVER( "192.168.0.33" );
- datasource.setUID( "pharvey" );
- datasource.setPWD( "pharvey" );
+ datasource.setSERVER( "localhost" );
+ datasource.setUID( "myodbctest" );
+ datasource.setPWD( "myodbctest" );
datasource.setDATABASE( "test" );
SQLRETURN nReturn = pConnection->doConnect( &datasource );
-
+
delete pEnvironment;
- if ( !SQL_SUCCEEDED( nReturn ) )
- QFAIL( "Failed to connect." );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
}
+/*!
+ brief Connect using ODBC Data Source Name (DSN) and leave the
+ connection up for further tests.
+*/
+void MYSQLPlusTest::doConnect()
+{
+ pConnection = new MConnection( &environment );
+
+ SQLRETURN nReturn = pConnection->doConnect( TEXT("myodbctest"), SQL_NTS,
TEXT("myodbctest"), SQL_NTS, TEXT("myodbctest"), SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doDropTable()
+{
+ SQLWCHAR * psSQL = TEXT("DROP TABLE IF EXISTS tbMyODBCTest");
+ MStatement statement( pConnection );
+
+ SQLRETURN nReturn = statement.doExecDirect( psSQL, SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doCreateTable()
+{
+ SQLWCHAR * psSQL = TEXT("CREATE TABLE tbMyODBCTest ( nUserID MEDIUMINT(8) NOT
NULL AUTO_INCREMENT, vcName VARCHAR(60) NOT NULL, PRIMARY KEY ( nUserID ), KEY ( vcName )
)");
+ MStatement statement( pConnection );
+
+ SQLRETURN nReturn = statement.doExecDirect( psSQL, SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doInsert()
+{
+ MStatement statement( pConnection );
+ SQLRETURN nReturn;
+
+ nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( 'name1' )"),
SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+ nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( 'name2' )"),
SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+ nReturn = statement.doExecDirect( TEXT("INSERT INTO tbMyODBCTest ( 'name3' )"),
SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+}
+
+void MYSQLPlusTest::doSelect()
+{
+ MStatement statement( pConnection );
+ SQLRETURN nReturn;
+ SQLINTEGER nRows = 0;
+ SQLINTEGER nUserID = 0;
+ SQLWCHAR psName[100];
+ SQLINTEGER nStrLenOrInd;
+
+ nReturn = statement.doExecDirect( TEXT("SELECT * FROM tbMyODBCTest"), SQL_NTS );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+ nReturn = statement.doRowCount( &nRows );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+ QCOMPARE( nRows, (SQLINTEGER)3 );
+
+ nRows = 0;
+ while ( 1 )
+ {
+ nReturn = statement.doFetch();
+ if ( nReturn == SQL_NO_DATA )
+ break;
+
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+
+ nRows++;
+
+ nReturn = statement.getData( 1, SQL_C_ULONG, &nUserID, SQL_IS_INTEGER,
&nStrLenOrInd );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+ QVERIFY( nStrLenOrInd >= 0 );
+
+ nReturn = statement.getData( 2, SQL_C_CHAR, &psName, sizeof(psName),
&nStrLenOrInd );
+ QCOMPARE( nReturn, (SQLRETURN)SQL_SUCCESS );
+ QVERIFY( nStrLenOrInd >= 1 );
+ }
+ QCOMPARE( nRows, (SQLINTEGER)3 );
+}
+
+void MYSQLPlusTest::doDisconnect()
+{
+ SQLRETURN nReturn = pConnection->doDisconnect();
+ QVERIFY( SQL_SUCCEEDED( nReturn ) );
+}
+
QTEST_MAIN( MYSQLPlusTest )
#include "MYSQLPlusTest.moc"
| Thread |
|---|
| • Connector/ODBC 5 commit: r231 - in MYSQLPlus: MYSQLPlusLib MYSQLPlusTest | pharvey | 13 May |