Tipo de dado String no Delphi com Oracle

Delphi

11/12/2006

Olá! Você pode me ajudar?

Eu estou com um pequeno programa de exemplo Delphi 7 + Oracle XE.
Criei a tabela Cliente com a coluna Nome_Cliente do tipo
VARCHAR2(30).
Quando crio o campo Nome_Cliente no ClientDataSet e coloco-o do
tipo String e tamanho 30, o sistema gera erro de tipos incompatíveis relatando que no Delphi é String e no Oracle
está WideString.
Então quando coloco o campo Nome_Cliente do tipo WideString no Delphi, aí funciona.
Mas por que sou obrigada a colocar WideString no Delphi, sendo que só quero um campo String de 30 caracteres?
Se for obrigado a colocar WideString no Delphi, terei que mudar os campos strings das tabelas do banco SQL Server, pois estou
fazendo o exemplo do site de 1 aplicação com mais de um banco de dados.
Daí surge uma nova dúvida: Se no Delphi o campo for necessariamente WideString qual tipo para Nome_Cliente devo colocar no
SQL Server Express 2005? Pois já testei todos os campos Alfanuméricos(Varchar) e não funciona mais.
Só funciona se no Delphi, o campo referido for String!
O que devo fazer para que a aplicação funcione para os dois bancos? Já que a alteração faz funcionar apenas para um de cada vez?

Obrigada pela atenção.


Athena

Athena

Curtidas 0

Respostas

Rostery

Rostery

11/12/2006

• [b:1dba427a35]WideStrings [/b:1dba427a35][i:1dba427a35]são compreendidos de caracteres WideChar e não de caracteres AnsiChar, o que o torna compatível com strings Unicode.[/i:1dba427a35]
• [b:1dba427a35]WideStrings[/b:1dba427a35] [i:1dba427a35]são alocados usando a função API SysAllocStrLen(), o que o torna compatível com strings BSTR de OLE.[/i:1dba427a35]
• [b:1dba427a35]WideStrings[/b:1dba427a35] [i:1dba427a35]não são contados por referência, assim atribuir uma WideString à outra requer que toda a string seja copiada de um local na memória para outro. Isto torna WideStrings menos eficiente do que AnsiStrings em termos de velocidade e memória usada. [/i:1dba427a35]

[i:1dba427a35]Creio que seria melhor vc alterar no banco, um tipo que existe nois dois..[/i:1dba427a35]
[b:1dba427a35][]´s[/b:1dba427a35]


GOSTEI 0
Athena

Athena

11/12/2006

Então, mas a minha dúvida é exatamente essa: Quais os tipos de dados no Delphi que são correspondentes aos tipos de dados nos bancos de dados SQL Server e Oracle?

Por exemplo: No delphi, o tipo integer é integer no SQL Server e Number no Oracle.
Exemplo 2: No delphi, o tipo string e varchar no SQL Server e no Oracle, quando coloco Varchar2 ou Varchar ou Char não é compatível ao tipo String do delphi.

Será que não existe algum documento na internet onde eu possa encontrar a relação dos tipos de dados dos bancos de dados com o Delphi?

Obrigada.


GOSTEI 0
Rostery

Rostery

11/12/2006

[i:3526eb0daa]BoM, fiz umas buscar aki..não encontrei nenhum doc. não...
achei comparativo com o windows:[/i:3526eb0daa]

[u:3526eb0daa]http://www.recomende.com/arquivo/tutoriais/delphi/windows_api/tipos_dados_windows_corresponentes_delphi.php[/u:3526eb0daa]

[i:3526eb0daa]Mas não tem como vc converter com StrTo* ??[/i:3526eb0daa]
[b:3526eb0daa][]´s[/b:3526eb0daa]


GOSTEI 0
POSTAR