se ti interessa questo è l'esempio, funziona con entrambe le connection string, con 3 possibilità di lettura del risultato (molto simili se non uguali)
si, è scritto in php ma ... se non è zuppa è pan bagnato
Codice PHP:
$conn = new COM("ADODB.Connection") or die("Cannot start ADO");
$connStr = "Driver={SQL Server};Server=".$dbHOST."; Database=".$dbNAMEa."; Uid=".$dbUSER."; Pwd=".$dbPASS;
//$connStr = "PROVIDER=SQLOLEDB;SERVER=".$dbHOST."; UID=".$dbUSER."; PWD=".$dbPASS."; DATABASE=".$dbNAMEa;
$conn->open($connStr);
$sql = "
select top 5 1 as id, TOTenergy as valore from ".$dbNAMEa.".dbo.inverter_meter
union
select top 5 2 as id, caf_lim1 as valore from ".$dbNAMEb.".dbo.carform
";
if ( true ) {
print "<br />-------------------- 1st solution : recordset->open<br />";
$recordset = new COM("ADODB.RecordSet");
$recordset->open($sql, $conn, 3);
//$recordset->movefirst();
while(!$recordset->EOF){
print
$recordset->Fields['id']->value.
" -- ".
$recordset->Fields['valore']->value.
"<br />";
$recordset->movenext();
}
$recordset->close();
$recordset = null;
print "<br />";
}
if ( true ) {
print "<br />-------------------- 2nd solution : conn->execute<br />";
$recordset = $conn->execute($sql);
//$recordset->movefirst();
while(!$recordset->EOF){
print
$recordset->Fields['id']->value.
" -- ".
$recordset->Fields['valore']->value.
"<br />";
$recordset->MoveNext();
}
$recordset->Close();
$recordset = null;
print "<br />";
}
if ( true ) {
print "<br />-------------------- 3rd solution : recordset->open -> rs_array[]<br />";
$recordset = new COM("ADODB.RecordSet");
$recordset->open($sql, $conn, 3);
$selected_fields = array("id", "valore");
$rs_array = array();
while(!$recordset->EOF){
$temp_record = array();
foreach($selected_fields as $key => $fieldname){
$temp_record[$fieldname] = $recordset->Fields[$fieldname]->value;
print $temp_record[$fieldname]." -- ";
}
print "<br />";
$rs_array[] = $temp_record;
$recordset->movenext();
}
print "<br />";
}