将varchar值'Não'转换为数据类型tinyint时转换失败

时间:2017-03-03 18:41:59

标签: asp.net sql-server excel

我正在尝试解决错误,我创建了一个变量来存储Excel工作表中的数据。当我尝试在SQL Server中插入查询中的数据时发生错误。谢谢您的帮助 。

代码:变量声明:

  String valmoradafiscaligualmoradalocal = "";

信息搜索代码:

 Case 47: // column 21

 If ((WS.Cells [row, Collation] as Excel.Range) .Value)! = Null)
{

Valmoradafiscaligualmoradalocal = Convert.ToString ((WS.Cells [row, Contcoluna] as Excel.Range) .Value);

}
continue;

在sql server中插入代码:

 }

break;
}

 If (WS! = Null)
  {
  SqlCommand cmd = new SqlCommand ();
   cmd.CommandText = "INSERT tabela_sacc (Grupo,Tipo_de_Instalacao,SubGrupo,Nr_Cliente,Data_Entidade,Situacao_da_entidade,Tipo_Entidade,Nome,Contribuinte,Tipo_Documento,Numero_Documento,Nr_Ident,Cod_Cliente_Sistema_Antigo,Entidade_Pagadora,Nome_Entidade_Pagadora,Numero_Contrato,Data_Contrato,Tipo_Contrato,Tipo_Sensibilidade,Tipo_de_Fatura,Nivel_de_Contador,Morada_de_Envio,Localizacao,Tipo_de_Medicao_Telemetria,Data_Vigencia,Ultimo_Dia_Estimado,Ultimo_Dia_Real,Ultimo_Dia_Faturado,Data_Ultima_Fatura,Data_Proxima_Fatura,Data_Situacao,Consumo_Medio_Real,Estimativa,Grupo_Contador,N_Contador,N_Referencia_Contador,Selos_do_Contador,Data_Instalacao,Leit_Cont_Simples_a_Data_Inst,Leit_Cont_Secundaria_a_Data_Inst,Leit_Cont_Principal_a_Data_Inst,Numero_Fabricante,Fabricante,Modelo_do_Contador,Calibre,Morada_Fiscal_Igual_a_Morada_Local,N_Rua_A,Rua_A,Policia_A,Andar_A,Localidade_A,Freguesia_A,Cod_Postal_A,Des_Postal_A,Zona_Postal_A,N_Rua_C,Rua_C,Policia_C,Andar_C,Localidade_C,Freguesia_C,Cod_Postal_C,Des_Postal_C,Zona_Postal_C,Nome_Fatura,N_da_Instalacao,N_Predio,Ramal,Ramal_Associado,Ramal_Saneamento,Anotacoes,Anotacoes_Ramal_Saneamento,Zona_Abastecimento,ZMC,Classe_Consumo,Tipo_Consumo,Grupo_Tarifario,Situacao,Zona,Area,Local,Local_em_Vigor,Tipo_Abastecimento,Caracteristica_Local,Calibre_Local,Local_Totalizador) VALUES ('" + valgrupo + "','" + valsubgrupo + "' ,'" + valtpinstalacao.ToString() + "','" + valnrcliente + "','" + valdataentidade.ToString("MM/dd/yyyy") + "','" + valsituacaoentidade + "','" + valtpentidade + "','" + valnome + "','" + valcontrbuinte + "','" + valtpdoc + "','" + valndoc + "','" + valnridentidade + "','" + valcodclisistemaantigo + "','" + valentidadepagadora + "','" + valnomeentidadepagadora + "','" + valncontrato + "','" + valdatacontrato.ToString("MM/dd/yyyy") + "','" + valtpcontrato + "','" + valtpsensibilidade + "','" + valtpfatura + "','" + valnivelcontador + "','" + valmoradaenvio + "','" + vallocalizacao + "','" + valtpmedicaotelemetria + "','" + valdatavigencia.ToString("MM/dd/yyyy") + "','" + valultimodiaestimado.ToString("MM/dd/yyyy") + "','" + valultimodiareal.ToString("MM/dd/yyyy") + "','" + valultimodiafaturado.ToString("MM/dd/yyyy") + "','" + valdataultimafatura.ToString("MM/dd/yyyy") + "','" + valdataproximafatura.ToString("MM/dd/yyyy") + "','" + valdatasituacao.ToString("MM/dd/yyyy") + "','" + valconsumomedioreal + "','" + valestimativa + "','" + valgrupocontador + "','" + valncontador + "','" + valnreferenciacontador + "','" + valselocontador + "','" + valdatainstalacao.ToString("MM/dd/yyyy") + "','" + valleiturasimplescontadoradatainst + "','" + valleituraprincipalcontadoradatainst + "','" + valleiturasecundariacontadoradatainst + "','" + valnrfabricante + "','" + valfabricante + "','" + valmodelocontador + "','" + valcalibre + "','" + valmoradafiscaligualmoradalocal.ToString() + "','" + valnruaa + "','" + valruaa + "','" + valpoliciaa + "','" + valandara + "','" + vallocalidadea + "','" + valfreguesiaa + "','" + valcodposltala + "','" + valdespostala + "','" + valzonapostala + "','" + valnruac + "','" + valruac + "','" + valpoliciac + "','" + valandarc + "','" + vallocalidadec + "','" + valfreguesiac + "','" + valcodpostalc + "','" + valdespostalc + "','" + valzonapostalc + "','" + valnomefatura + "','" + valninstalacao + "','" + valnpredio + "','" + valramal + "','" + valramalassociado + "','" + valramalsaneamento + "','" + valanotacoes + "','" + valanotacoesramalsaneamento + "','" + valzonaabastecimento + "','" + valzmc + "','" + valclasseconsumo + "','" + valtipoconsumo + "','" + valgrupotarifario + "','" + valsituacao + "','" + valzona + "','" + valarea + "','" + vallocal + "','" + vallocalemvigor + "','" + valtpabastecimento + "','" + valcaracteristicalocal + "','" + valcalibrelocal + "','" + vallocaltotalizador + "')";
  Connection.Open();
  Cmd.Connection = connection;
  Cmd.CommandType = CommandType.Text;
  Cmd.ExecuteNonQuery();
  Connection.Close();
  valmoradafiscaligualmaradalocal= null;


  break;
  }

  }
  MessageBox.Show ("end");
  }


  }

1 个答案:

答案 0 :(得分:1)

我认为您需要检查SQL中的列,因为似乎'morada_Fiscal_Igual_a_Morada_Local'列是tinyint类型而不是获取字符串“Não”的文本

如果您尝试制作布尔类型,请使用“bit”类型

现在,您可以这样做:

"VALUES ('" + valmoradafiscaligualmoradalocal.ToString() == "Não" ? "0" : "1" + "')"

PS:Na proxima vezprestetentenção,se o campo for um tinyint,ou bit,quer dizer que ele quer receber 0 ou 1,assim como em um campo de verdadeiro ou falso。