Create View mit ADO
-
Kann ich mit ADO Views od. zumindesten Tabellen erstellen?
Geht das mit dem was MFC bietet oder nur mit Erweiterungen von dritten?
Wenn das nicht geht, heisst das, dass ich in diesen String, den man für das Select verwendet, auch wirklich nur Selects reinschreiben kann? Die anderen Befehle ruft man ja anders aus.
Welche von den eventuellen Erweiterungen wäre zu empfehlen?
Was für Alternativen gibt es generell?Hier noch etwas möchtgern-code:
::CoInitialize(NULL); // Variablen XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX CString strConnect,strQuery[10]; _CommandPtr cmd; //command object _RecordsetPtr rs; //recordset object _ConnectionPtr conn; //connection object // NULL vom Typ Variant erzeugen _variant_t vNull; vNull.vt = VT_ERROR; vNull.scode = DISP_E_PARAMNOTFOUND; //create instance of Command, Connection and Recordset. cmd.CreateInstance( __uuidof(Command)); rs.CreateInstance(__uuidof(Recordset)); conn.CreateInstance(__uuidof(Connection)); // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX strConnect="Data Source=PostgreSQL"; strQuery[2]="CREATE VIEW test2 (arg int, brg int)"; //<-- das da soll gehen :-) strQuery[3]="SELECT * FROM test"; conn->CursorLocation = adUseClient; conn->Open(_bstr_t( strConnect.GetBuffer(0)),L"", L"", -1); cmd->ActiveConnection = conn; cmd->CommandText = strQuery[2].GetBuffer(0); cmd->CommandText = strQuery[3].GetBuffer(0); // Commanobjekt festlegen rs->PutRefSource(cmd); // Recordset öffnen rs->Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown); m_DG2.SetRefDataSource(NULL); m_DG2.SetRefDataSource( (LPUNKNOWN) rs ); m_DG2.Refresh(); UpdateData(FALSE); //rs->Close(); //conn->Close(); ::CoUninitialize();Mach ich hier generell "ungute" Sachen?
wow, das waren jetzt ne menge fragen
-
Ich antworte mir mal.
Man muss in dem Code oben bloss zulassen, das er die Abfragen auch bearbeiten kann (ohrfeig). Also ein wenig die Zeilen vertauschen:cmd->CommandText = strQuery[0].GetBuffer(0); rs->PutRefSource(cmd); rs->Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown); cmd->CommandText = strQuery[1].GetBuffer(0); rs->PutRefSource(cmd); rs->Open(vNull, vNull, adOpenDynamic, adLockOptimistic, adCmdUnknown);