Jump to content


costeleta

Member Since 27/05/2008
Offline Last Active 22/09/2008, 15:31
-----

Topics I've Started

Carregando Dados Csv Em Banco Oracle

16/09/2008, 15:46

Amigos,
estou desenvolvendo um script que carrega em uma tabela do banco dados de um arquivo csv, conforme código abaixo.
o programa está compilando, mas na hora da execução aparece um erro de código ORA-00911 dizendo que existe um caracter invalido na parte da query (ao que tudo indica). alguém poderia me ajudar a identificar este erro. já tetei de tudo e não obtive exito.



[codebox]private void button1_Click(object sender, EventArgs e)
{
try
{
//definição da string de conexão com o banco de dados.
string constr = "Data Source =XXXXXXXXXXXXX;User Id=ZZZZZZZZZZZ;Password=WwWwwW";

//instanciando o objeto de conexão com o banco de dados, onde é passado a string de conexão por parâmetro.
OracleConnection con = new OracleConnection(constr);

//abrindo conexão
con.Open();

//criando o comando que fará a consulta ao banco de dados.
OracleCommand cmd = con.CreateCommand();

cmd.CommandText = "SELECT TO_CHAR(SYSDATE-2,'YYYYMMDD') AS DATASIST FROM DUAL";
OracleDataReader reader3 = cmd.ExecuteReader();
string datasist; // variável que receberá a data de ontem.
reader3.Read();
datasist = Convert.ToString(reader3["DATASIST"]);


string nomeArquivo = "AAAA_bbb_CC" + datasist + ".csv";

//método que faz o download do arquivo para C:\
TransfereArquivoFtpLocal(nomeArquivo);


cmd.CommandText = "INSERT INTO CARREGAEMA(DIA, ELEMENTO_DE_REDE, HORA, RETORNO_ID, QT_DE_COMANDO, COMANDO_DESC)\n";
cmd.CommandText += "Values(?DIA, ?ElementoOriginador, ?Hora, ?CODRetorno, ?QtdeComando, ?Comando)";

cmd.Parameters.Add(new OracleParameter("DIA", OracleDbType.Date));

cmd.Parameters.Add(new OracleParameter("ElementoOriginador", OracleDbType.Varchar2, 200));

cmd.Parameters.Add(new OracleParameter("Hora", OracleDbType.Int32));

cmd.Parameters.Add(new OracleParameter("CODRetorno", OracleDbType.Int32));

cmd.Parameters.Add(new OracleParameter("QtdeComando", OracleDbType.Int32));

cmd.Parameters.Add(new OracleParameter("Comando", OracleDbType.Varchar2, 200));


string strCaminho = "C:\\AAAA_bbb_CC" + datasist + ".csv";

StreamReader sr = new StreamReader(strCaminho);

string[] registro;

string linha;

while ((linha = sr.ReadLine()) != null)
{

registro = linha.Split(';');



cmd.Parameters["DIA"].Value = registro[0];

cmd.Parameters["ElementoOriginador"].Value = registro[1];

cmd.Parameters["Hora"].Value = registro[2];

cmd.Parameters["CODRetorno"].Value = registro[3];

cmd.Parameters["QtdeComando"].Value = registro[4];

cmd.Parameters["Comando"].Value = registro[5];



cmd.CommandTimeout = 1000;

cmd.ExecuteNonQuery();

}
}
catch (Exception ex)
{
this.SalvarArquivo(DateTime.Now.ToString("ddMMyyyy HHmmss.") + "erro", "Falha no programa principal." + ex.ToString());
}
}[/codebox]



tem gerado o seguinte erro:

Oracle.DataAccess.Client.OracleException was unhandled
Message="ORA-00911: invalid character"
Source="Oracle Data Provider for .NET"
DataSource="XXXXXXXXXXXXXXXXXXXXXXXX"
Number=911
Procedure=""
StackTrace:
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src)
at Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery()
at carrega_EMA.Form1.button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\XXXXXXXX\My Documents\Visual Studio 2005\Projects\carrega_EMA_Application\carrega_EMA\Form1.cs:line 98



A coluna COMANDO_DESC possui os caracteres *, <, > : no meio do texto.
E as colunas HORA, RETORNO_ID e QT_DE_COMANDO no banco são do tipo number e os parâmetros eu declarei como int32, pois não encontrei number no OracleParameter.OracleDbType.

Será que essas coisas podem influenciar?

Manipulando Arquuivos

02/09/2008, 15:23

Amigos,

Estou com um problema em meu programa que faz FTP de diários e automáticamanete. quando ele roda e o arquivo ainda não está disponivel ele faz o FTP de um arquivo sem conteúdo e com o mesmo nome do arquivo que desejo. para resolver isto pensei em incluir no meu script, antes de fazer o FTP uma consulta no diretório para ver se o arquivo se encontra disponível. descobri que posso fazer isto usando a classe System.IO.DirectoryInfo. Estou no caminho certo ou existe uma outra forma mais eficiente? Como farei para consultar este diretório que só é permitido acessá-lo via FTP e logando-o? alguem tem algum exemplo que acessa o endereço de origem do arquivo com usuario e senha?

Importar Arquivo Excel Em Um Banco Oracle

25/08/2008, 16:52

Amigos,

Preciso criar uma aplicação que importe dados de um arquivo Excel para uma tabela de um banco de dados Oracle. esta aplicação deverá rodar automaticamente todos os dias.

A minha idéia é criar em C# um serviço do windows que executaría este processo, no entanto não sei como fazer esta importação.

Alguém podería me ajudar?

E-mail No Formato Html

17/07/2008, 14:46

Amigos estou com um probleminha

Criei um serviço que envia e-mails automático no formato HTML, mas na hora que os clientes dão um Forward (Outlook) as tabelas que fazem parte da mensagem saem completamente distorcidas e o conteúdo pode ser alterado.

Existe uma forma mudar isto ?

Não sei transformando minha mensagem do formato html para um formato de imagem onde ele mostre o conteudo perfeitamente e sem possibilidade de alteração ?

Template Windows Service

04/06/2008, 16:02

Olá amigo,

Estou utilizando o Visual C# 2005 Express Edition, mas nele não veio o template para criação de windows service. Alguém podería me ajudar dizendo onde consigo baixá-lo?

IPB Skin By Virteq