virtual void* Main(void) { //for (int i = 0; i < 10; ++i) { for (;;) { try { CDatabase db("MSDEV"); db.Connect(); CQuery q = db.NewQuery("select serverproperty('servername')"); q.Execute(); LOG_POST("Thread " << m_Num << " connected to " << q.begin()[1].AsString()); try { q.SetSql("drop table #t"); q.Execute(); } catch (CSDB_Exception&) { // } q.SetSql("create table #t (tt varchar(100))"); q.Execute(); q.SetSql("insert into #t values (@tt)"); for (int i = 0; i < 500; ++i) { q.SetParameter("@tt", i, eSDB_String); q.Execute(); } SleepMilliSec(100); } catch (CSDB_Exception& ex) { LOG_POST("Error from SDBAPI in thread " << m_Num << ": " << ex); } } return NULL; }
BEGIN_NCBI_SCOPE /////////////////////////////////////////////////////////////////////////////// BOOST_AUTO_TEST_CASE(Test_DateTime) { string sql; CQuery query = GetDatabase().NewQuery(); CTime t; CTime dt_value; try { if (true) { // Initialization ... { sql = "CREATE TABLE #test_datetime ( \n" " id INT, \n" " dt_field DATETIME NULL \n" ") \n"; query.SetSql( sql ); query.Execute(); query.RequireRowCount(0); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } { // Initialization ... { sql = "INSERT INTO #test_datetime(id, dt_field) " "VALUES(1, GETDATE() )"; query.SetSql( sql ); query.Execute(); query.RequireRowCount(0); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } // Retrieve data ... { sql = "SELECT * FROM #test_datetime"; query.SetSql( sql ); query.Execute(); query.RequireRowCount(1); BOOST_CHECK( query.HasMoreResultSets() ); CQuery::iterator it = query.begin(); BOOST_CHECK( it != query.end() ); BOOST_CHECK( !it[2].IsNull()); dt_value = it[2].AsDateTime(); BOOST_CHECK( !dt_value.IsEmpty() ); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } // Insert data using parameters ... { query.SetSql( "DELETE FROM #test_datetime" ); query.Execute(); query.RequireRowCount(0); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); query.SetParameter( "@dt_val", dt_value ); sql = "INSERT INTO #test_datetime(id, dt_field) " "VALUES(1, @dt_val)"; query.SetSql( sql ); query.Execute(); query.RequireRowCount(0); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } // Retrieve data again ... { sql = "SELECT * FROM #test_datetime"; // ClearParamList is necessary here ... query.ClearParameters(); query.SetSql( sql ); query.Execute(); query.RequireRowCount(1); BOOST_CHECK( query.HasMoreResultSets() ); CQuery::iterator it = query.begin(); BOOST_CHECK( it != query.end() ); BOOST_CHECK( !it[2].IsNull()); CTime dt_value2 = it[2].AsDateTime(); BOOST_CHECK_EQUAL( dt_value.AsString(), dt_value2.AsString() ); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } // Insert NULL data using parameters ... { query.SetSql( "DELETE FROM #test_datetime" ); query.Execute(); query.RequireRowCount(0); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); query.SetNullParameter( "@dt_val", eSDB_DateTime ); sql = "INSERT INTO #test_datetime(id, dt_field) " "VALUES(1, @dt_val)"; query.SetSql( sql ); query.Execute(); query.RequireRowCount(0); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } // Retrieve data again ... { sql = "SELECT * FROM #test_datetime"; // ClearParamList is necessary here ... query.ClearParameters(); query.SetSql( sql ); query.Execute(); query.RequireRowCount(1); BOOST_CHECK( query.HasMoreResultSets() ); CQuery::iterator it = query.begin(); BOOST_CHECK( it != query.end() ); BOOST_CHECK( it[2].IsNull()); BOOST_CHECK_NO_THROW(query.VerifyDone(CQuery::eAllResultSets)); } } } } catch(const CException& ex) { DBAPI_BOOST_FAIL(ex); } }