Exemple #1
0
bool TestExtPdo::test_pdo_mysql() {
  CreateMySqlTestTable();

  try {
    string source = "mysql:host=";
    string host = TEST_HOSTNAME;
    size_t pos = host.find(':');
    if (pos != string::npos) {
      host.replace(pos, 1, ";port=");
    }
    source += host;
    source += ";dbname=";
    source += TEST_DATABASE;

    p_PDO dbh(NEWOBJ(c_PDO)());
    dbh->t___construct(source.c_str(), TEST_USERNAME, TEST_PASSWORD,
                       CREATE_MAP1(q_PDO$$ATTR_PERSISTENT, false));
    Variant vstmt = dbh->t_prepare("select * from test");
    c_PDOStatement *stmt = vstmt.toObject().getTyped<c_PDOStatement>();
    VERIFY(stmt->t_execute());

    Variant rs = stmt->t_fetch(q_PDO$$FETCH_ASSOC);
    VS(rs, CREATE_MAP2("id", "1", "name", "test"));
    rs = stmt->t_fetch(q_PDO$$FETCH_ASSOC);
    VS(rs, CREATE_MAP2("id", "2", "name", "test2"));

  } catch (Object &e) {
    VS(e, null);
  }
  return Count(true);
}
logical pc_TopicFromOldStyle :: Setup_SDB_ValueList ( )
{
 PropertyHandle ref_dsc_class(GetDBHandle(),"ODS_Class",PI_Read); 
 PropertyHandle sys_ident(GPH("sys_ident"));
 PropertyHandle V8("V8");
 PropertyHandle sv;
 int32          indx0 = 0;
 logical        term  = NO;
BEGINSEQ
  if ( !ref_dsc_class.Get(ExtractKey()) )            LEAVESEQ
  DBObjectHandle dbh(GetDBHandle());
  PropertyHandle    vl(dbh,"SDB_ValueList",PI_Write);
  sv = sys_ident + V8;
  if ( !vl.Provide(sv) )                 ERROR
  pc_TopicFromOldStyle   vlist(&vl);
  Setup_SDB_Resource(&ref_dsc_class);
  
  PH(&vl,values)
  pc_TopicFromOldStyle   pc_values(&values);
  PH(&ref_dsc_class,val_descriptions);

  if ( !dict.IsValid() )
    dict.Open(GetDBHandle());
  PropertyHandle    cs(dict,sys_ident.GetString(),PI_Read);
  while ( cs.Get(indx0++) )
  {
    values.Add(*cs.GPH("string"));
    *values.GPH("__AUTOIDENT") = cs.GPH("value");
    *values.GPH("type") = cs.GPH("type");
    if ( val_descriptions.Get(*values.GPH("sys_ident")) )
      pc_values.Setup_SDB_Resource(&val_descriptions);
  }

RECOVER
  term = YES;
ENDSEQ
  return(term);
}
Exemple #3
0
bool TestExtPdo::test_pdo_sqlite() {
  CreateSqliteTestTable();

  try {
    string source = "sqlite:/tmp/foo.db";

    p_PDO dbh(NEWOBJ(c_PDO)());
    dbh->t___construct(source.c_str(), TEST_USERNAME, TEST_PASSWORD,
                       CREATE_MAP1(q_PDO$$ATTR_PERSISTENT, false));
    Variant vstmt = dbh->t_prepare("select * from foo");
    c_PDOStatement *stmt = vstmt.toObject().getTyped<c_PDOStatement>();
    VERIFY(stmt->t_execute());

    Variant rs = stmt->t_fetch(q_PDO$$FETCH_ASSOC);
    VS(rs, CREATE_MAP1("bar", "ABC"));
    rs = stmt->t_fetch(q_PDO$$FETCH_ASSOC);
    VS(rs, CREATE_MAP1("bar", "DEF"));

  } catch (Object &e) {
    VS(e, null);
  }

  try {
    string source = "sqlite:/tmp/foo.db";

    p_PDO dbh(NEWOBJ(c_PDO)());
    dbh->t___construct(source.c_str(), TEST_USERNAME, TEST_PASSWORD,
                       CREATE_MAP1(q_PDO$$ATTR_PERSISTENT, false));
    Variant vstmt = dbh->t_query("select * from foo");
    ArrayIter iter = vstmt.begin();
    VERIFY(!iter.end());
    VS(iter.first(), 0);
    VS(iter.second(), CREATE_MAP2("bar", "ABC", 0, "ABC"));
    iter.next();
    VERIFY(!iter.end());
    VS(iter.first(), 1);
    VS(iter.second(), CREATE_MAP2("bar", "DEF", 0, "DEF"));
    iter.next();
    VERIFY(iter.end());

  } catch (Object &e) {
    VS(e, null);
  }

  try {
    string source = "sqlite:/tmp/foo.db";
    p_PDO dbh(NEWOBJ(c_PDO)());
    dbh->t___construct(source.c_str(), TEST_USERNAME, TEST_PASSWORD,
                       CREATE_MAP1(q_PDO$$ATTR_PERSISTENT, false));
    dbh->t_query("CREATE TABLE IF NOT EXISTS foobar (id INT)");
    dbh->t_query("INSERT INTO foobar (id) VALUES (1)");
    Variant res = dbh->t_query("SELECT id FROM foobar LIMIT 1");
    c_PDOStatement *stmt = res.toObject().getTyped<c_PDOStatement>();
    Variant ret = stmt->t_fetch();
    VS(ret["id"], "1");

  } catch (Object &e) {
    VS(e, null);
  }

  CleanupSqliteTestTable();
  return Count(true);
}