Usuário com melhor resposta
Leitura de Dados tipo DateTime no MySql utlizando C# <Conversão especificada não é válida>

Pergunta
-
Boa tarde a todos,
Sou iniciante em desenvolvimento .NET, e estou com um dificuldade:
Tenho uma tabela (Usuarios) em uma Base de Dados MySql, e a mesma contém um campo do tipo DateTime,não consigo retornar valores desse campo, tenho como excessão a seguinte mensagem:
"Conversão especificada não é válida"
Abaixo os objetos que realizam a transação:
Classe Usuário:
public Usuario()
{
}
public Usuario
(Nullable<DateTime> lastActivityDate)
{
this._lastActivityDate = lastActivityDate;
}
Nullable<DateTime> lastActivityDate
{
get { return _lastActivityDate; }
set { _lastActivityDate = value; }
}
}
}
Classe Provider:
protected virtual Usuario GetUsuarioFromReader(IDataReader Reader)
{
return new Usuario
(
(Nullable<DateTime>)Reader["lastActivityDate"]
);
}
protected virtual List<Usuario> GetUsuarioCollectionfromReader(IDataReader reader)
{
List<Usuario> ListaUsuario = new List<Usuario>();
while (reader.Read())
ListaUsuario.Add(GetUsuarioFromReader(reader));
return ListaUsuario;
}
}
Classe DAL:
using System;
using System.Collections.Generic;
using System.Xml.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using MySql.Data.MySqlClient;
public class DAL_Default : Provider
{
public DAL_Default()
{
}
public override List<Usuario> GetUsuario()
{
using (MySqlConnection cn = new MySqlConnection(this.connectionString))
{
MySqlCommand cmd = new MySqlCommand(
"select id," +
"ifnull(lastActivityDate,'01/01/0001 00:00:00')as lastActivityDate " +
"from my_aspnet_users", cn
);
cmd.CommandType = CommandType.Text;
cn.Open();
return GetUsuarioCollectionfromReader(ExecuteReader(cmd));
}
}
}
Classe de Acesso a Dados:using System;using System.Collections.Generic;using System.Linq;using System.Web;using MySql.Data;using System.Data;using System.Data.Common;
public abstract class DataAccess{public DataAccess(){// TODO: Add constructor logic here}
private string _connectionString = "";
protected string connectionString
{get { return _connectionString; }set { _connectionString = value; }}
protected int ExecuteNonQuery(DbCommand cmd){foreach(DbParameter param in cmd.Parameters){if (param.Direction == ParameterDirection.Output || param.Direction == ParameterDirection.ReturnValue){switch(param.DbType){case DbType.AnsiString:case DbType.AnsiStringFixedLength:case DbType.String:case DbType.StringFixedLength:case DbType.Xml:param.Value="";break;
case DbType.Boolean:param.Value=false;break;
case DbType.Byte:param.Value=byte.MinValue;break;
case DbType.Date:case DbType.DateTime:param.Value = DateTime.MinValue;break;case DbType.Currency:case DbType.Decimal:param.Value=decimal.MinValue;break;
case DbType.Guid:param.Value=Guid.Empty;break;
case DbType.Double:case DbType.Int16:case DbType.Int32:case DbType.Int64:param.Value=0;break;default: param.Value=null;break;}}}return cmd.ExecuteNonQuery();}protected IDataReader ExecuteReader(DbCommand cmd){return ExecuteReader(cmd,CommandBehavior.Default);}
protected IDataReader ExecuteReader(DbCommand cmd,CommandBehavior behavior){return cmd.ExecuteReader(behavior);}protected object ExecuteEscalar(DbCommand cmd){return cmd.ExecuteScalar();}}
Coladela- Editado Perfil Inativado sexta-feira, 17 de dezembro de 2010 13:14
Respostas
-
Malange,
Meu problema foi corrigido paleativamente, convertendo este campo para o tipo CHAR em meu select, assim consigo tratá-lo como String no C#, por hora consig o que precisava.
Mais uma vez obrigado.
Coladela- Marcado como Resposta Perfil Inativado sexta-feira, 17 de dezembro de 2010 13:13
Todas as Respostas
-
Veja esta dica da Mysql: http://forums.mysql.com/read.php?38,43294
Just Be Humble Malange!- Sugerido como Resposta AndreAlvesLimaModerator sexta-feira, 17 de dezembro de 2010 11:34
-
-
Malange,
Meu problema foi corrigido paleativamente, convertendo este campo para o tipo CHAR em meu select, assim consigo tratá-lo como String no C#, por hora consig o que precisava.
Mais uma vez obrigado.
Coladela- Marcado como Resposta Perfil Inativado sexta-feira, 17 de dezembro de 2010 13:13