你好我有一个问题,我无法找到一个解决办法,在我的笔记本电脑一切正常,但是在服务器上它给我这个错误:“System.InvalidCastException在服务器
错误消息:
System.InvalidCastException: Specified cast is not valid. at System.Data.DataRowExtensions.UnboxT`1.ValueField(Object value) at System.Data.DataRowExtensions.Field[T](DataRow row, String columnName) at Blue.Adesao.GetAdesoes(SqlConnection conexao, SqlTransaction trans) at listagem_form_obras.GetAdesoes()"
大约功能:
public static DataTable GetAdesoes (SqlConnection conexao, SqlTransaction trans) {
SqlCommand comando;
String sql;
sql = "SELECT id, data_criacao, nome, nif, telefone, email, valido " +
"FROM forms_adesao_entidade ";
comando = new SqlCommand(sql, conexao, trans);
SqlDataAdapter dtadapter = new SqlDataAdapter(comando);
DataTable dt = new DataTable();
dtadapter.Fill(dt);
dt.Columns.Add("dataFormatada", System.Type.GetType("System.String"));
dt.Columns.Add(new DataColumn("validacao", System.Type.GetType("System.String")));
foreach(DataRow r in dt.Rows) {
int valido = (int)r.Field<int>("valido");
r["validacao"] = Adesao.GetValidacao(valido, conexao);
r["dataFormatada"] = Utilidades.FormatarData(r.Field<DateTime>("data_criacao"));
}
return dt;
}
public static string GetValidacao (int IDValido, SqlConnection conexao) {
string sql = "";
DataTable dt = new DataTable();
sql = "SELECT [designacao] FROM [forms_estados] WHERE [email protected]";
SqlCommand comando = new SqlCommand(sql, conexao);
comando.Parameters.Add(new SqlParameter("@IDValido", SqlDbType.Int));
comando.Parameters["@IDValido"].Value = IDValido;
SqlDataAdapter dtadapter = new SqlDataAdapter(comando);
dtadapter.Fill(dt);
return dt.Rows[0].Field<string>("designacao");
}
数据库
在前端我有一个简单的gridview。
对于有问题的行,“data_criacao”为空吗? –
您的某些服务器数据可能为空。你有两个不同的数据库吗?所有允许空值的列在投射前都必须检查是否包含值。 – t3chb0t
默认情况下,每个被调用的字段都有一个值,无论是在数据库还是在插入查询中,以防万一出现问题 – Nikato