Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Representa uma ligação a uma base de dados Access usando Objetos de Acesso a Dados (DAO).
Observação
O Objeto de Acesso a Dados (DAO) é suportado através do Office 2013. O DAO 3.6 é a versão final e está obsoleto.
Sintaxe
class CDaoDatabase : public CObject
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CDaoDatabase::CDaoDatabase | Constrói um CDaoDatabase objeto. Chamar Open para ligar o objeto a uma base de dados. |
Métodos Públicos
| Nome | Description |
|---|---|
| CDaoDatabase::CanTransact | Retorna diferentes de zero se a base de dados suportar transações. |
| CDaoDatabase::PodeAtualizar | Retorna diferente de zero se o CDaoDatabase objeto for atualizável (não apenas leitura). |
| CDaoDatabase::Fechar | Fecha a ligação à base de dados. |
| CDaoDatabase::Create | Cria o objeto de base de dados DAO subjacente e inicializa o CDaoDatabase objeto. |
| CDaoDatabase::CreateRelation | Define uma nova relação entre as tabelas da base de dados. |
| CDaoDatabase::D eleteQueryDef | Elimina um objeto querydef guardado na coleção QueryDefs da base de dados. |
| CDaoDatabase::D eleteRelation | Elimina uma relação existente entre tabelas na base de dados. |
| CDaoDatabase::D eleteTableDef | Elimina a definição de uma tabela na base de dados. Isto elimina a tabela real e todos os seus dados. |
| CDaoDatabase::Executar | Executa uma consulta de ação. Chamar Execute uma consulta que devolve resultados lança uma exceção. |
| CDaoDatabase::GetConnect | Devolve a cadeia de ligação usada para ligar o CDaoDatabase objeto a uma base de dados. Usado para ODBC. |
| CDaoDatabase::GetName | Devolve o nome da base de dados atualmente em uso. |
| CDaoDatabase::GetQueryDefCount | Devolve o número de consultas definidas para a base de dados. |
| CDaoDatabase::GetQueryDefInfo | Devolve informação sobre uma consulta especificada definida na base de dados. |
| CDaoDatabase::GetQueryTimeout | Devolve o número de segundos após os quais as operações de consulta à base de dados expiram. Afeta todas as operações subsequentes de abertura, adição de novos, atualizações e edições, bem como outras operações em fontes de dados ODBC (apenas), como Execute chamadas. |
| CDaoDatabase::GetRecordsAffected | Devolve o número de registos afetados pela última operação de atualização, edição ou adição ou por uma chamada para Execute. |
| CDaoDatabase::GetRelationCount | Devolve o número de relações definidas entre tabelas na base de dados. |
| CDaoDatabase::GetRelationInfo | Devolve informação sobre uma relação especificada definida entre tabelas na base de dados. |
| CDaoDatabase::GetTableDefCount | Devolve o número de tabelas definidas na base de dados. |
| CDaoDatabase::GetTableDefInfo | Devolve informações sobre uma tabela especificada na base de dados. |
| CDaoDatabase::GetVersion | Retorna a versão do motor da base de dados associada à base de dados. |
| CDaoDatabase::IsOpen | Retorna não nulo se o CDaoDatabase objeto estiver atualmente ligado a uma base de dados. |
| CDaoDatabase::Open | Estabelece uma ligação a uma base de dados. |
| CDaoDatabase::SetQueryTimeout | Define o número de segundos após os quais as operações de consulta à base de dados (apenas em fontes de dados ODBC) expiram. Afeta todas as operações subsequentes de abertura, adição de novos, atualizações e eliminações. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CDaoDatabase::m_pDAODatabase | Um apontador para o objeto da base de dados DAO subjacente. |
| CDaoDatabase::m_pWorkspace | Um apontador para o objeto CDaoWorkspace que contém a base de dados e define o seu espaço de transações. |
Observações
Para informações sobre os formatos de base de dados suportados, consulte a função membro GetName . Pode ter um ou mais CDaoDatabase objetos ativos de cada vez num dado "espaço de trabalho", representados por um objeto CDaoWorkspace . O espaço de trabalho mantém uma coleção de objetos abertos da base de dados, chamada coleção Bases de Dados.
Usage
Podes criar objetos de base de dados implicitamente, quando crias objetos de recordet. Mas também podes criar objetos de base de dados explicitamente. Para usar uma base de dados existente explicitamente com CDaoDatabase, faça qualquer uma das seguintes opções:
Constrói um
CDaoDatabaseobjeto, passando um ponteiro para um objeto aberto do CDaoWorkspace .Ou construir um
CDaoDatabaseobjeto sem especificar o espaço de trabalho (o MFC cria um objeto de espaço de trabalho temporário).
Para criar um novo Microsoft Jet (. MDB), construir um CDaoDatabase objeto e chamar a sua função Create member. Não ligueOpen depois Createde .
Para abrir uma base de dados existente, constrói um CDaoDatabase objeto e chama a sua função membro Open .
Qualquer uma destas técnicas adiciona o objeto da base de dados DAO à coleção de Bases de Dados do espaço de trabalho e abre uma ligação aos dados. Quando construir objetos CDaoRecordset, CDaoTableDef ou CDaoQueryDef para operar na base de dados conectada, passe aos construtores desses objetos um ponteiro para o seu CDaoDatabase objeto. Quando terminares de usar a ligação, chama a função Fechar membro e destrói o CDaoDatabase objeto.
Close Fecha quaisquer conjuntos de registos que ainda não tenha fechado.
Transações
O processamento de transações em bases de dados é fornecido ao nível do espaço de trabalho — veja as funções membros BeginTrans, CommitTrans e Rollback da classe CDaoWorkspace.
Conexões ODBC
A forma recomendada de trabalhar com fontes de dados Open Database Base Connectivity (ODBC) é anexar tabelas externas a uma base de dados Microsoft Jet (.MDB).
Collections
Cada base de dados mantém as suas próprias coleções de objetos tabledef, querydef, recordet e relation. A classe CDaoDatabase fornece funções aos membros para manipular estes objetos.
Observação
Os objetos são armazenados no DAO, não no objeto da base de dados MFC. O MFC fornece classes para objetos tabledef, querydef e recordet, mas não para objetos de relação.
Hierarquia de herança
CDaoDatabase
Requerimentos
Cabeçalho: afxdao.h
CDaoDatabase::CanTransact
Chame esta função membro para determinar se a base de dados permite transações.
BOOL CanTransact();
Valor de retorno
Diferente de zero se a base de dados suportar transações; caso contrário, 0.
Observações
As transações são geridas no espaço de trabalho da base de dados.
CDaoDatabase::PodeAtualizar
Chame esta função membro para determinar se o CDaoDatabase objeto permite atualizações.
BOOL CanUpdate();
Valor de retorno
Diferente de zero se o CDaoDatabase objeto permitir atualizações; caso contrário 0, indicando ou que passou TRUE em bReadOnly quando abriu o CDaoDatabase objeto ou que a própria base de dados é só de leitura. Veja a função de membro aberto .
Observações
Para informações sobre atualização da base de dados, consulte o tópico "Propriedade Atualizável" na Ajuda do DAO.
CDaoDatabase::CDaoDatabase
Constrói um CDaoDatabase objeto.
CDaoDatabase(CDaoWorkspace* pWorkspace = NULL);
Parâmetros
pWorkspace
Um apontador para o CDaoWorkspace objeto que irá conter o novo objeto da base de dados. Se aceitar o valor padrão de NULL, o construtor cria um objeto temporário CDaoWorkspace que utiliza o espaço de trabalho padrão do DAO. Podes obter um ponteiro para o objeto workspace através do m_pWorkspace membro de dados.
Observações
Depois de construir o objeto, se estiver a criar um novo Microsoft Jet (. MDB), chamar a função Create member do objeto. Se estiver, em vez disso, a abrir uma base de dados existente, chame a função membro Open do objeto.
Quando terminares com o objeto, deves chamar a função do membro Close e depois destruir o CDaoDatabase objeto.
Pode achar conveniente incorporar o CDaoDatabase objeto na sua classe de documentos.
Observação
Um CDaoDatabase objeto também é criado implicitamente se abrir um objeto CDaoRecordset sem passar um ponteiro para um objeto existente CDaoDatabase . Este objeto da base de dados é encerrado quando se fecha o objeto do conjunto de registos.
CDaoDatabase::Fechar
Chame esta função membro para se desligar de uma base de dados e encerrar quaisquer registos abertos, defs de tabela e defs de consulta associados à base de dados.
virtual void Close();
Observações
É boa prática fechar estes objetos você mesmo antes de chamar a isto função elemental. Fechar um CDaoDatabase objeto remove-o da coleção Bases de Dados no espaço de trabalho associado. Como Close não destrói o CDaoDatabase objeto, podes reutilizar o objeto abrindo a mesma base de dados ou outra base de dados diferente.
Atenção
Chama a função Update member (se houver edições pendentes) e a Close função member em todos os objetos do open recordet antes de fechares uma base de dados. Se sair de uma função que declara CDaoRecordset ou CDaoDatabase objetos na pilha, a base de dados é encerrada, quaisquer alterações não guardadas são perdidas, todas as transações pendentes são revertidas e quaisquer edições pendentes nos seus dados são perdidas.
Atenção
Se tentar fechar um objeto de base de dados enquanto algum objeto de conjunto de registos está aberto, ou se tentar fechar um objeto de espaço de trabalho enquanto quaisquer objetos de base de dados pertencentes a esse espaço específico estão abertos, esses objetos de registo serão encerrados e quaisquer atualizações ou edições pendentes serão revertidas. Se tentar fechar um objeto de espaço de trabalho enquanto quaisquer objetos de base de dados pertencentes a ele estão abertos, a operação fecha todos os objetos de base de dados pertencentes a esse objeto de espaço de trabalho específico, o que pode resultar no encerramento de objetos de registos não fechados. Se não fechares o teu objeto de base de dados, o MFC reporta uma falha de asserção nas compilações de depuração.
Se o objeto da base de dados estiver definido fora do âmbito de uma função, e sair da função sem a fechar, o objeto da base de dados permanecerá aberto até ser explicitamente fechado ou até o módulo em que está definido estar fora do âmbito.
CDaoDatabase::Create
Para criar um novo Microsoft Jet (. MDB), chama esta função membro depois de construir um CDaoDatabase objeto.
virtual void Create(
LPCTSTR lpszName,
LPCTSTR lpszLocale = dbLangGeneral,
int dwOptions = 0);
Parâmetros
lpszName
Uma expressão string que é o nome do ficheiro da base de dados que está a criar. Pode ser o caminho completo e o nome do ficheiro, como "C:\\MYDB. MDB". Tens de fornecer um nome. Se não fornecer uma extensão de nome de ficheiro, . MDB está anexado. Se a sua rede suportar a convenção uniforme de nomes (UNC), pode também especificar um caminho de rede, como "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB". Apenas a Microsoft Jet (. MDB) podem ser criados usando esta função membro. (Barras duplas são obrigatórias nos literais de string porque "\" é o carácter de escape C++.)
lpszLocale
Uma expressão string usada para especificar a ordem de colagem para a criação da base de dados. O valor predefinido é dbLangGeneral. Os valores possíveis são:
dbLangGeneralInglês, Alemão, Francês, Português, Italiano e Espanhol ModernodbLangArabicÁrabedbLangCyrillicRussodbLangCzechChecodbLangDutchHolandêsdbLangGreekGregodbLangHebrewHebraicodbLangHungarianHúngarodbLangIcelandicIslandêsdbLangNordicLínguas nórdicas (apenas versão 1.0 do motor de base de dados Microsoft Jet)dbLangNorwdanNorueguesa e dinamarquesadbLangPolishPolacodbLangSpanishEspanhol tradicionaldbLangSwedfinSueco e finlandêsdbLangTurkishTurco
dwOptions
Um inteiro que indica uma ou mais opções. Os valores possíveis são:
dbEncryptCrie uma base de dados encriptada.dbVersion10Crie uma base de dados com a versão 1.0 da base de dados Microsoft Jet.dbVersion11Crie uma base de dados com a versão 1.1 da base de dados Microsoft Jet.dbVersion20Crie uma base de dados com a versão 2.0 da base de dados Microsoft Jet.dbVersion30Crie uma base de dados com a versão 3.0 da base de dados Microsoft Jet.
Se omitir a constante de encriptação, cria-se uma base de dados não encriptada. Só pode especificar uma constante de versão. Se omitir uma constante de versão, é criada uma base de dados que utiliza a base de dados Microsoft Jet versão 3.0.
Atenção
Se uma base de dados não estiver encriptada, é possível, mesmo implementando segurança de utilizador/palavra-passe, ler diretamente o ficheiro binário de disco que constitui a base de dados.
Observações
Create cria o ficheiro da base de dados e o objeto de base de dados DAO subjacente e inicializa o objeto C++. O objeto é adicionado à coleção de Bases de Dados do espaço de trabalho associado. O objeto da base de dados está em estado aberto; Não ligues Open* depois Createde .
Observação
Com Create, pode criar apenas o Microsoft Jet (. MDB). Não pode criar bases de dados ISAM ou ODBC.
CDaoDatabase::CreateRelation
Chame esta função membro para estabelecer uma relação entre um ou mais campos numa tabela primária da base de dados e um ou mais campos numa tabela estrangeira (outra tabela na base de dados).
void CreateRelation(
LPCTSTR lpszName,
LPCTSTR lpszTable,
LPCTSTR lpszForeignTable,
long lAttributes,
LPCTSTR lpszField,
LPCTSTR lpszForeignField);
void CreateRelation(CDaoRelationInfo& relinfo);
Parâmetros
lpszName
O nome único do objeto de relação. O nome deve começar por uma letra e pode conter um máximo de 40 caracteres. Pode incluir números e caracteres sublinhados, mas não pode incluir pontuação ou espaços.
lpszTable
O nome da tabela principal na relação. Se a tabela não existir, o MFC lança uma exceção do tipo CDaoException.
lpszForeignTable
O nome da tabela estrangeira na relação. Se a tabela não existir, o MFC lança uma exceção do tipo CDaoException.
lAtributos
Um valor longo que contém informação sobre o tipo de relação. Pode usar este valor para impor a integridade referencial, entre outras coisas. Pode usar o operador bitwise-OR (|) para combinar qualquer um dos seguintes valores (desde que a combinação faça sentido):
dbRelationUniqueA relação é um para um.dbRelationDontEnforceA relação não é imposta (sem integridade referencial).dbRelationInheritedA relação existe numa base de dados não atual que contém as duas tabelas anexadas.dbRelationUpdateCascadeAs atualizações irão ser feitas em cascata (para mais informações sobre cascatas, veja Observações).dbRelationDeleteCascadeAs eliminações vão acontecer em cascata.
lpszField
Um ponteiro para uma cadeia terminada por nulo contendo o nome de um campo na tabela primária (nomeada por lpszTable).
lpszForeignField
Um apontador para uma cadeia terminada por nulo contendo o nome de um campo na tabela estrangeira (nomeada por lpszForeignTable).
relinfo
Uma referência a um objeto CDaoRelationInfo que contém informação sobre a relação que pretende criar.
Observações
A relação não pode envolver uma consulta ou uma tabela anexada de uma base de dados externa.
Use a primeira versão da função quando a relação envolve um campo em cada uma das duas tabelas. Use a segunda versão quando a relação envolve múltiplos campos. O número máximo de corpos numa relação é 14.
Esta ação cria um objeto de relação DAO subjacente, mas este é um detalhe de implementação MFC, uma vez que o encapsulamento dos objetos de relação em MFC está contido na classe CDaoDatabase. A MFC não fornece uma disciplina para relações.
Se definir os atributos do objeto de relação para ativarem operações em cascata, o motor da base de dados atualiza ou elimina automaticamente registos em uma ou mais outras tabelas quando são feitas alterações em tabelas de chaves primárias relacionadas.
Por exemplo, suponha que estabelece uma relação de eliminação em cascata entre uma tabela de Clientes e uma tabela de Encomendas. Quando apagas registos da tabela de Clientes, os registos na tabela de Encomendas relacionados com esse cliente também são eliminados. Além disso, se estabeleceres relações de eliminação em cascata entre a tabela de Encomendas e outras tabelas, os registos dessas tabelas são automaticamente eliminados quando eliminas registos da tabela de Clientes.
Para informações relacionadas, consulte o tópico "CreateRelation Method" na Ajuda DAO.
CDaoDatabase::D eleteQueryDef
Chame esta função membro para eliminar o querydef especificado—consulta guardada—da CDaoDatabase coleção QueryDefs do objeto.
void DeleteQueryDef(LPCTSTR lpszName);
Parâmetros
lpszName
O nome da consulta guardada para apagar.
Observações
Depois, essa consulta deixa de ser definida na base de dados.
Para informações sobre a criação de objetos querydef, veja a classe CDaoQueryDef. Um objeto querydef fica associado a um objeto particular CDaoDatabase quando se constrói o CDaoQueryDef objeto, passando-lhe um ponteiro para o objeto da base de dados.
CDaoDatabase::D eleteRelation
Chame esta função membro para eliminar uma relação existente da coleção de Relações do objeto da base de dados.
void DeleteRelation(LPCTSTR lpszName);
Parâmetros
lpszName
O nome da relação a eliminar.
Observações
Depois disso, a relação deixou de existir.
Para informações relacionadas, consulte o tópico "Método Eliminar" na Ajuda do DAO.
CDaoDatabase::D eleteTableDef
Chame esta função membro para eliminar a tabela especificada e todos os seus dados da CDaoDatabase coleção TableDefs do objeto.
void DeleteTableDef(LPCTSTR lpszName);
Parâmetros
lpszName
O nome da definição da tabela para apagar.
Observações
Depois disso, essa tabela deixa de ser definida na base de dados.
Observação
Tem muito cuidado para não apagar tabelas do sistema.
Para informações sobre como criar objetos tabledef, veja a classe CDaoTableDef. Um objeto tabledef fica associado a um objeto particular CDaoDatabase quando se constrói o CDaoTableDef objeto, passando-lhe um ponteiro para o objeto da base de dados.
Para informações relacionadas, consulte o tópico "Método Eliminar" na Ajuda do DAO.
CDaoDatabase::Executar
Chame esta função membro para executar uma consulta de ação ou executar uma instrução SQL na base de dados.
void Execute(
LPCTSTR lpszSQL,
int nOptions = dbFailOnError);
Parâmetros
lpszSQL
Apontador para uma string terminada por null contendo um comando SQL válido para executar.
nOpções
Um inteiro que especifica opções relacionadas com a integridade da consulta. Pode usar o operador bitwise-OR (|) para combinar qualquer uma das seguintes constantes, desde que a combinação faça sentido. Por exemplo, não combinaria dbInconsistent com dbConsistent:
dbDenyWriteNegar permissão de escrita a outros utilizadores.dbInconsistent(Padrão) Atualizações inconsistentes.dbConsistentAtualizações consistentes.dbSQLPassThroughPassagem SQL. Faz com que a instrução SQL seja passada para uma fonte de dados ODBC para processamento.dbFailOnErrorReverta atualizações se ocorrer um erro.dbSeeChangesGera um erro em tempo de execução se outro utilizador estiver a alterar os dados que está a editar.
Observação
Se ambos dbInconsistent e dbConsistent estiverem incluídos ou se nenhum estiver incluído, o resultado é o padrão. Para uma explicação destas constantes, veja o tópico "Método de Execução" na Ajuda do DAO.
Observações
Execute funciona apenas para consultas de ação ou consultas SQL pass-through que não devolvem resultados. Não funciona para consultas selecionadas, que devolvem registos.
Para uma definição e informações sobre consultas de ação, consulte os tópicos "Consulta de Ação" e "Método de Execução" na Ajuda do DAO.
Sugestão
Dada uma instrução SQL sintaticamente correta e permissões adequadas, a Execute função membro não falhará mesmo que nenhuma linha possa ser modificada ou eliminada. Por isso, use sempre a dbFailOnError opção, ao usar a Execute função membro, para executar uma consulta de atualização ou eliminação. Esta opção faz com que a MFC lance uma exceção do tipo CDaoException e reverta todas as alterações bem-sucedidas se algum dos registos afetados estiver bloqueado e não puder ser atualizado ou eliminado. Note que pode sempre ligar GetRecordsAffected para saber quantos registos foram afetados.
Chame a função membro GetRecordsAffected do objeto da base de dados para determinar o número de registos afetados pela chamada mais recente Execute . Por exemplo, GetRecordsAffected devolve informação sobre o número de registos eliminados, atualizados ou inseridos ao executar uma consulta de ação. A contagem devolvida não reflete alterações nas tabelas relacionadas quando estão em vigor atualizações ou eliminações em cascata.
Execute Não devolve um conjunto de registos. Usar Execute em uma consulta que seleciona registos faz com que a MFC lance uma exceção do tipo CDaoException. (Não existe uma ExecuteSQL função membro análoga a CDatabase::ExecuteSQL.)
CDaoDatabase::GetConnect
Chame esta função membro para recuperar a cadeia de ligação usada para ligar o CDaoDatabase objeto a uma base de dados ODBC ou ISAM.
CString GetConnect();
Valor de retorno
A cadeia de ligação Open foi chamada com sucesso numa fonte de dados ODBC; caso contrário, uma cadeia vazia. Para um Microsoft Jet (. MDB), a cadeia está sempre vazia, a menos que a defina para uso com a dbSQLPassThrough opção usada com a função Executar membro ou usada na abertura de um conjunto de registos.
Observações
A cadeia fornece informação sobre a origem de uma base de dados aberta ou de uma base de dados usada numa consulta pass-through. A cadeia de ligação é composta por um especificador de tipo de base de dados e zero ou mais parâmetros separados por ponto e vírgula.
Observação
Usar as classes DAO MFC para ligar a uma fonte de dados via ODBC é menos eficiente do que ligar através de uma tabela anexada.
Observação
A cadeia de ligação é usada para passar informação adicional ao ODBC e a certos drivers ISAM conforme necessário. Não é usado para . Bases de dados MDB. Para tabelas base de bases de dados Microsoft Jet, a cadeia de ligação é uma cadeia vazia ("") exceto quando a usa para uma consulta SQL pass-through, conforme descrito em Return Value acima.
Consulte a função Open member para uma descrição de como a cadeia de ligação é criada. Depois de a cadeia de ligação estar definida na Open chamada, pode depois usá-la para verificar a definição e determinar o tipo, caminho, ID de utilizador, Palavra-passe ou fonte de dados ODBC da base de dados.
CDaoDatabase::GetName
Chame esta função membro para recuperar o nome da base de dados atualmente aberta, que é o nome de um ficheiro de base de dados existente ou o nome de uma fonte de dados ODBC registada.
CString GetName();
Valor de retorno
O caminho completo e o nome do ficheiro da base de datos se for bem-sucedido; caso contrário, um CString vazio.
Observações
Se a sua rede suportar a convenção uniforme de nomes (UNC), pode também especificar um caminho de rede—por exemplo, "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Barras duplas são obrigatórias nos literais de string porque "\" é o carácter de escape C++.)
Pode, por exemplo, querer mostrar este nome num título. Se ocorrer um erro enquanto o nome está a ser recuperado, o MFC lança uma exceção do tipo CDaoException.
Observação
Para melhor desempenho quando se acederem a bases de dados externas, recomendamos que anexe tabelas de bases de dados externas a uma base de dados Microsoft Jet (. MDB) em vez de se ligar diretamente à fonte de dados.
O tipo de base de dados é indicado pelo ficheiro ou diretório para o qual o caminho aponta, da seguinte forma:
| O nome do caminho aponta para... | Tipo de base de dados |
|---|---|
| . ficheiro MDB | Base de dados Microsoft Jet (Microsoft Access) |
| Diretório que contém . Ficheiro(s) DBF | Base de dados dBASE |
| Diretório que contém .XLS ficheiro | Base de dados Microsoft Excel |
| Diretório que contém . Ficheiro(s) PDX | Base de dados Paradox |
| Diretório que contém ficheiros de base de dados de texto apropriadamente formatados | Base de dados em formato de texto |
Para bases de dados ODBC como SQL Server e Oracle, a cadeia de ligação da base de dados identifica um nome de fonte de dados (DSN) que é registado pelo ODBC.
CDaoDatabase::GetQueryDefCount
Chame esta função membro para recuperar o número de consultas definidas na coleção QueryDefs da base de dados.
short GetQueryDefCount();
Valor de retorno
O número de consultas definidas na base de dados.
Observações
GetQueryDefCount é útil se precisares de passar por todos os querydefs na coleção QueryDefs. Para obter informações sobre uma determinada consulta na coleção, consulte GetQueryDefInfo.
CDaoDatabase::GetQueryDefInfo
Chame esta função membro para obter vários tipos de informação sobre uma consulta definida na base de dados.
void GetQueryDefInfo(
int nIndex,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetQueryDefInfo(
LPCTSTR lpszName,
CDaoQueryDefInfo& querydefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parâmetros
nIndex
O índice da consulta pré-definida na coleção QueryDefs da base de dados, para consulta por índice.
querydefinfo
Uma referência a um objeto CDaoQueryDefInfo que devolve a informação solicitada.
dwInfoOptions
Opções que especificam que informação sobre o conjunto de registos recuperar. As opções disponíveis estão listadas aqui juntamente com o que fazem a função devolver no conjunto de registos:
AFX_DAO_PRIMARY_INFO (Padrão) Nome, Tipo
AFX_DAO_SECONDARY_INFO Informação principal mais: Data de Criação, Data da Última Atualização, Registos de Declarações, Atualizáveis
AFX_DAO_ALL_INFO Informação primária e secundária mais: SQL, Connect, ODBCTimeout
lpszName
Uma string contendo o nome de uma consulta definida na base de dados, para consulta por nome.
Observações
São fornecidas duas versões da função para que possa selecionar uma consulta quer por índice na coleção QueryDefs da base de dados, quer pelo nome da consulta.
Para uma descrição da informação devolvida em querydefinfo, consulte a estrutura CDaoQueryDefInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição do dwInfoOptions. Se pedir um nível de informação, também obtém quaisquer níveis anteriores de informação.
CDaoDatabase::GetQueryTimeout
Chame esta função membro para recuperar o número atual de segundos para permitir antes de as operações subsequentes na base de dados ligada serem temporizadas.
short GetQueryTimeout();
Valor de retorno
Um inteiro curto contendo o valor de timeout em segundos.
Observações
Uma operação pode expirar devido a problemas de acesso à rede, tempo excessivo de processamento de consultas, e assim por diante. Enquanto a definição estiver em vigor, afeta todas as operações de abrir, adicionar novas, atualizar e eliminar em quaisquer conjuntos de registos associados a este CDaoDatabase objeto. Pode alterar a definição atual de timeout chamando o SetQueryTimeout. Alterar o valor de timeout da consulta para um conjunto de registos após a abertura não altera o valor do conjunto de registos. Por exemplo, as operações Move subsequentes não usam o novo valor. O valor padrão é inicialmente definido quando o motor da base de dados é inicializado.
O valor padrão para os tempos de espera das consultas é retirado do registo do Windows. Se não houver definição de registo, o padrão é 60 segundos. Nem todas as bases de dados suportam a capacidade de definir um valor de tempo de espera da consulta. Se definir um valor de timeout de consulta igual a 0, não ocorre timeout; e a comunicação com a base de dados pode deixar de responder. Este comportamento pode ser útil durante o desenvolvimento. Se a chamada falhar, o MFC lança uma exceção do tipo CDaoException.
Para informações relacionadas, consulte o tópico "QueryTimeout Property" na Ajuda DAO.
CDaoDatabase::GetRecordsAffected
Chame esta função membro para determinar o número de registos afetados pela chamada mais recente da função Executar membro.
long GetRecordsAffected();
Valor de retorno
Um inteiro longo contendo o número de registos afetados.
Observações
O valor devolvido inclui o número de registos eliminados, atualizados ou inseridos por uma consulta de ação executada com Execute. A contagem devolvida não reflete alterações nas tabelas relacionadas quando estão em vigor atualizações ou eliminações em cascata.
Para informações relacionadas, consulte o tópico "Propriedade Afetada por Registos" na Ajuda DAO.
CDaoDatabase::GetRelationCount
Chame esta função membro para obter o número de relações definidas entre tabelas na base de dados.
short GetRelationCount();
Valor de retorno
O número de relações definidas entre tabelas na base de dados.
Observações
GetRelationCount é útil se precisar de percorrer todas as relações definidas na coleção de Relações da base de dados. Para obter informações sobre uma dada relação na coleção, veja GetRelationInfo.
Para ilustrar o conceito de relação, considere uma tabela de Fornecedores e uma tabela de Produtos, que podem ter uma relação um-para-muitos. Nesta relação, um fornecedor pode fornecer mais do que um produto. Outras relações são um para um e muitos-para-muitos.
CDaoDatabase::GetRelationInfo
Chame esta função membro para obter informações sobre uma relação especificada na coleção de Relações da base de dados.
void GetRelationInfo(
int nIndex,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetRelationInfo(
LPCTSTR lpszName,
CDaoRelationInfo& relinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parâmetros
nIndex
O índice do objeto de relação na coleção de Relações da base de dados, para consulta por índice.
relinfo
Uma referência a um objeto CDaoRelationInfo que devolve a informação solicitada.
dwInfoOptions
Opções que especificam que informação sobre a relação recuperar. As opções disponíveis estão listadas aqui juntamente com o que fazem a função retornar sobre a relação:
AFX_DAO_PRIMARY_INFO (Padrão) Nome, Tabela, Tabela Estrangeira
AFX_DAO_SECONDARY_INFO Atributos, Informação de Campo
A Informação de Campo é um objeto CDaoRelationFieldInfo que contém os campos da tabela primária envolvida na relação.
lpszName
Uma cadeia contendo o nome do objeto de relação, para pesquisa por nome.
Observações
Duas versões desta função fornecem acesso quer por índice, quer por nome. Para uma descrição da informação devolvida em relinfo, consulte a estrutura CDaoRelationInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição do dwInfoOptions. Se solicitares informação a um nível, também recebes informação em quaisquer níveis anteriores.
Observação
Se definir os atributos do objeto de relação para ativar operações em cascata (dbRelationUpdateCascades ou dbRelationDeleteCascades), o motor da base de dados Microsoft Jet atualiza ou elimina automaticamente registos numa ou mais outras tabelas quando são feitas alterações em tabelas de chave primárias relacionadas. Por exemplo, suponha que estabelece uma relação de eliminação em cascata entre uma tabela de Clientes e uma tabela de Encomendas. Quando apagas registos da tabela de Clientes, os registos na tabela de Encomendas relacionados com esse cliente também são eliminados. Além disso, se estabeleceres relações de eliminação em cascata entre a tabela de Encomendas e outras tabelas, os registos dessas tabelas são automaticamente eliminados quando eliminas registos da tabela de Clientes.
CDaoDatabase::GetTableDefCount
Chame esta função membro para recuperar o número de tabelas definidas na base de dados.
short GetTableDefCount();
Valor de retorno
O número de defs de tabela definidos na base de dados.
Observações
GetTableDefCount é útil se precisares de percorrer todos os tabledefs na coleção TableDefs da base de dados. Para obter informações sobre uma dada tabela na coleção, consulte GetTableDefInfo.
CDaoDatabase::GetTableDefInfo
Chame esta função membro para obter vários tipos de informação sobre uma tabela definida na base de dados.
void GetTableDefInfo(
int nIndex,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
void GetTableDefInfo(
LPCTSTR lpszName,
CDaoTableDefInfo& tabledefinfo,
DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);
Parâmetros
nIndex
O índice do objeto tabledef na coleção TableDefs da base de dados, para consulta por índice.
tabledefinfo
Uma referência a um objeto CDaoTableDefInfo que devolve a informação solicitada.
dwInfoOptions
Opções que especificam que informação sobre a tabela recuperar. As opções disponíveis estão listadas aqui juntamente com o que fazem a função retornar sobre a relação:
AFX_DAO_PRIMARY_INFO (Padrão) Nome, Atualizável, Atributos
AFX_DAO_SECONDARY_INFO Informação principal mais: Data de Criação, Data da Última Atualização, Nome da Tabela de Fonte, Ligação
AFX_DAO_ALL_INFO Informação primária e secundária mais: Regra de Validação, Texto de Validação, Contagem de Registos
lpszName
O nome do objeto tabledef, para pesquisa por nome.
Observações
São fornecidas duas versões da função para que possa selecionar uma tabela quer por índice na coleção TableDefs da base de dados, quer pelo nome da tabela.
Para uma descrição da informação devolvida em tabledefinfo, veja a estrutura CDaoTableDefInfo . Esta estrutura tem membros que correspondem aos itens de informação listados acima na descrição do dwInfoOptions. Se solicitar informação a um nível, também recebe informação para quaisquer níveis anteriores.
Observação
A opção AFX_DAO_ALL_INFO fornece informação que pode ser lenta de obter. Neste caso, contar os registos na tabela pode ser muito demorado se houver muitos registos.
CDaoDatabase::GetVersion
Chame esta função membro para determinar a versão do ficheiro da base de dados Microsoft Jet.
CString GetVersion();
Valor de retorno
Um CString que indica a versão do ficheiro da base de dados associada ao objeto.
Observações
O valor devolvido representa o número de versão na forma "major.minor"; por exemplo, "3.0". O número de versão do produto (por exemplo, 3.0) consiste no número de versão (3), um ponto e o número de lançamento (0). As versões até à data são 1.0, 1.1, 2.0 e 3.0.
Para informações relacionadas, consulte o tópico "Propriedade de Versão" no DAO Help.
CDaoDatabase::IsOpen
Chame esta função membro para determinar se o CDaoDatabase objeto está atualmente aberto numa base de dados.
BOOL IsOpen() const;
Valor de retorno
Não nulo se o CDaoDatabase objeto estiver atualmente aberto; caso contrário, 0.
Observações
CDaoDatabase::m_pDAODatabase
Contém um ponteiro para a interface OLE para o objeto da base de dados DAO subjacente ao CDaoDatabase objeto.
Observações
Usa este ponteiro se precisares de aceder diretamente à interface do DAO.
Para informações sobre como ligar diretamente para o DAO, consulte a Nota Técnica 54.
CDaoDatabase::m_pWorkspace
Contém um ponteiro para o objeto CDaoWorkspace que contém o objeto da base de dados.
Observações
Usa este ponteiro se precisares de aceder diretamente ao espaço de trabalho. Por exemplo, para obter apontadores para outros objetos de base de dados na coleção Databases do workspace.
CDaoDatabase::Open
Deve chamar esta função membro para inicializar um objeto recém-construído CDaoDatabase que represente uma base de dados existente.
virtual void Open(
LPCTSTR lpszName,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T(""));
Parâmetros
lpszName
Uma expressão de string que é o nome de um Microsoft Jet existente (. MDB). Se o nome do ficheiro tiver uma extensão, é obrigatório. Se a sua rede suportar a convenção uniforme de nomenclatura (UNC), pode também especificar um caminho de rede, como "\\\\MYSERVER\\MYSHARE\\MYDIR\\MYDB. MDB". (Barras duplas são obrigatórias nos literais de string porque "\" é o carácter de escape C++.)
Algumas considerações aplicam-se ao usar o lpszName. Se:
Refere-se a uma base de dados que já está aberta para acesso exclusivo por outro utilizador, o MFC lança uma exceção do tipo CDaoException. Apanha essa exceção para informar o utilizador de que a base de dados não está disponível.
É uma cadeia vazia ("") e lpszConnect é "ODBC;", é exibida uma caixa de diálogo que lista todos os nomes de fontes de dados ODBC registados para que o utilizador possa selecionar uma base de dados. Deves evitar ligações diretas a fontes de dados ODBC; Use antes uma mesa anexa.
Caso contrário, não se refere a uma base de dados existente ou a um nome válido de fonte de dados ODBC, o MFC lança uma exceção do tipo
CDaoException.
Observação
Para detalhes sobre códigos de erro DAO, consulte o DAOERR. Ficheiro H. Para informações relacionadas, consulte o tópico "Erros de Acesso a Dados Trappable" na Ajuda DAO.
bExclusivo
Um valor booleano que é TRUE se a base de dados for aberta para acesso exclusivo (não partilhado) e FALSE se a base de dados for aberta para acesso partilhado. Se omitir este argumento, a base de dados é aberta para acesso partilhado.
bReadOnly
Um valor booleano que é TRUE se a base de dados for aberta para acesso apenas de leitura e FALSE se a base de dados for aberta para acesso de leitura/escrita. Se omitires este argumento, a base de dados é aberta para acesso de leitura/escrita. Todos os conjuntos de registos dependentes herdam este atributo.
lpszConnect
Uma expressão string usada para abrir a base de dados. Esta cadeia constitui os argumentos de ligação ODBC. Deve fornecer os argumentos exclusivos e apenas de leitura para fornecer uma cadeia de origem. Se a base de dados for uma base de dados Microsoft Jet (. MDB), esta cadeia está vazia (""). A sintaxe do valor predefinido—_T("")—oferece portabilidade tanto para compilações Unicode como ANSI da sua aplicação.
Observações
Open associa a base de dados ao objeto DAO subjacente. Não podes usar o objeto da base de dados para construir objetos de recordet, tabledef ou querydef até que seja inicializado.
Open adiciona o objeto da base de dados à coleção de Bases de Dados do espaço de trabalho associado.
Use os parâmetros da seguinte forma:
Se estiver a abrir um Microsoft Jet (. MDB), usar o parâmetro lpszName e passar uma string vazia para o parâmetro lpszConnect ou passar uma string de palavra-passe do formulário "; PWD=password" se a base de dados estiver protegida por palavra-passe (. Apenas bases de dados MDB).
Se estiver a abrir uma fonte de dados ODBC, passe uma cadeia válida de ligação ODBC em lpszConnect e uma cadeia vazia em lpszName.
Para informações relacionadas, consulte o tópico "Método OpenDatabase" na Ajuda do DAO.
Observação
Para melhor desempenho ao aceder a bases de dados externas, incluindo bases de dados ISAM e fontes de dados ODBC, recomenda-se que anexe tabelas de base de dados externas a uma base de dados Microsoft Jet Engine (. MDB) em vez de se ligar diretamente à fonte de dados.
É possível que uma ligação tente expirar se, por exemplo, o host do SGBD não estiver disponível. Se a tentativa de ligação falhar, Open lança uma exceção do tipo CDaoException.
As restantes observações aplicam-se apenas às bases de dados ODBC:
Se a base de dados for uma base de dados ODBC e os parâmetros na sua Open chamada não contêm informação suficiente para fazer a ligação, o driver ODBC abre uma caixa de diálogo para obter a informação necessária do utilizador. Quando chama Open, a sua cadeia de ligação, lpszConnect, é armazenada de forma privada e está disponível ao chamar a função membro do GetConnect .
Se quiser, pode abrir a sua própria caixa de diálogo antes de ligar Open para obter informações do utilizador, como uma palavra-passe, e depois adicionar essa informação à cadeia de ligação que passa para Open. Ou pode querer guardar a string de ligação que passa (talvez no registo do Windows) para a poder reutilizar da próxima vez que a sua aplicação chamar Open um CDaoDatabase objeto.
Também pode usar a string de ligação para múltiplos níveis de autorização de login (cada um para um objeto diferente CDaoDatabase ) ou para transmitir outra informação específica da base de dados.
CDaoDatabase::SetQueryTimeout
Chame esta função membro para sobrescrever o número padrão de segundos e permitir antes de as operações subsequentes na base de dados ligada esgotar o tempo.
void SetQueryTimeout(short nSeconds);
Parâmetros
nSegundos
O número de segundos a permitir antes de uma tentativa de consulta termina.
Observações
Uma operação pode expirar devido a problemas de acesso à rede, tempo excessivo de processamento de consultas, e assim por diante. Ligue SetQueryTimeout antes de abrir o seu conjunto de registos ou antes de chamar as funções membros AddNew, Update ou Delete do conjunto se quiser alterar o valor de timeout da consulta. A definição afeta todos os Open, AddNew, Update, e Delete chamadas subsequentes a quaisquer conjuntos de registos associados a este CDaoDatabase objeto. Alterar o valor de timeout da consulta para um conjunto de registos após a abertura não altera o valor do conjunto de registos. Por exemplo, as operações Move subsequentes não usam o novo valor.
O valor padrão para os tempos de espera das consultas é 60 segundos. Nem todas as bases de dados suportam a capacidade de definir um valor de tempo de espera da consulta. Se definir um valor de timeout de consulta igual a 0, não ocorre timeout; A comunicação com a base de dados pode deixar de responder. Este comportamento pode ser útil durante o desenvolvimento.
Para informações relacionadas, consulte o tópico "QueryTimeout Property" na Ajuda DAO.
Consulte também
Classe CObject
Gráfico de Hierarquia
Classe CDaoWorkspace
Classe CDaoRecordset
Classe CDaoTableDef
Classe CDaoQueryDef
Classe CDatabase
Classe CDaoException