2
I’m validating before importing a file. csv to the database via C# , I have already done a validation to ensure that the state code is an integer and also need to check if there is the state code that is coming in . csv is actually registered in my database...how can I do that ? here is my method that makes the validations:
DataTable dt = CriaDataTable();
using (StreamReader arquivo = new StreamReader(caminho))
{
string linhaArquivo;
string[] campos;
DataRow registro;
bool cabecalhoJaLido = false;
while (!arquivo.EndOfStream)
{
linhaArquivo = arquivo.ReadLine();
if (!cabecalhoJaLido)
{
cabecalhoJaLido = true;
continue;
}
campos = linhaArquivo.Split(new string[] { ";" }, StringSplitOptions.None);
registro = dt.NewRow();
try
{
bool resultNumero;
int numero;
resultNumero = int.TryParse(campos[4], out numero);
registro["Numero"] = numero;
if (!resultNumero)
{
Label1.Visible = true;
Label1.Text = "Campo numero não esta vindo como valor inteiro";
}
bool resultTipoPessoa;
int tipoPessoa;
resultTipoPessoa = int.TryParse(campos[2], out tipoPessoa);
registro["TipoPessoa"] = tipoPessoa;
if (!resultTipoPessoa || tipoPessoa > 1)
{
Label2.Visible = true;
Label2.Text = "Campo Tipo Pessoa com valor inválido";
}
bool resultEstado;
int estado;
resultEstado = int.TryParse(campos[7], out estado);
registro["Estado"] = estado;
if (!resultEstado)
{
Label3.Visible = true;
Label3.Text = "Campo Codigo Estado não esta vindo como valor inteiro";
}
if (campos[0].Length > 70)
{
registro["Nome"] = "";
Label4.Visible = true;
Label4.Text = "Campo Nome excedendo limite de caracteres";
}
else
{
registro["Nome"] = campos[0].ToString().Trim();
}
if (fgCpfCheck(campos[1]) == false)
{
registro["Documento"] = "";
Label5.Visible = true;
Label5.Text = "CPF Inválido";
}
else
{
registro["Documento"] = campos[1].Trim().ToString();
}
if (campos[3].Length > 100)
{
registro["Endereco"] = "";
Label6.Visible = true;
Label6.Text = "Campo Endereco excedendo limite de caracteres";
}
else
{
registro["Endereco"] = campos[3].Trim().ToString();
}
if (campos[5].Length > 20)
{
registro["Complemento"] = "";
Label7.Visible = true;
Label7.Text = "Campo Complemento excedendo limite de caracteres";
}
else
{
registro["Complemento"] = campos[5].Trim().ToString();
}
if (campos[6].Length > 60)
{
registro["Bairro"] = "";
Label8.Visible = true;
Label8.Text = "Campo Bairro excedendo limite de caracteres";
}
else
{
registro["Bairro"] = campos[6].Trim().ToString();
}
if (campos[8].Length > 100)
{
registro["Cidade"] = "";
Label9.Visible = true;
Label9.Text = "Campo Cidade excedendo limite de caracteres";
}
else
{
registro["Cidade"] = campos[8].Trim().ToString();
}
if (campos[9].Length > 10)
{
registro["CEP"] = "";
Label10.Visible = true;
Label10.Text = "Campo CEP excedendo limite de caracteres";
}
else
{
registro["CEP"] = campos[9].Trim().ToString();
}
if (Label2.Visible == false)
{
dt.Rows.Add(registro);
}
else
{
Label11.Visible = true;
Label11.Text = "Operação não realizada!";
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
return dt;
}
I am passing this top method for this other method...that it will yes access the bank and import the file. csv
public void ProcessarImportacao(string caminho)
{
using (SqlConnection conexao = new SqlConnection(ConfigurationManager.ConnectionStrings["MC1_DB_TREINAMENTOConnectionString"].ConnectionString))
{
conexao.Open();
using (SqlBulkCopy bc = CreateSqlBulkCopy(conexao))
{
bc.WriteToServer(RetornaDtPreenchido(caminho));
}
}
}
Give more information. What technology are you using to access the database? Do you want the
resultEstado
be located? How is your DB structured? Help us help you.– Maniero
In my DB I have a state table with 19 states , or is the state code that is coming in the file . csv has to be one of them...I’m using Sqlbulkcopy to record this file in Bank...understood more or less ?
– Daniel
Avoid using HTML tags in the answer. To format as code, just select with the mouse and press the icon
{ }
. For more details, please read this: http://answall.com/editing-help– Bacco