I am doing validations before importing a .csv file into the database via C #, I have already done a validation to ensure that the state code is an integer and I also need to check if there is the state code that is coming in .csv exists actually registered in my database ... how can I do this? here is my method that does 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'm passing this method over to this other method ... that it will access the database and import the .csv file.
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));
}
}
}