Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Cesar_Fdo en 19 Noviembre 2009, 18:42 pm



Título: Error Simpatico!
Publicado por: Cesar_Fdo en 19 Noviembre 2009, 18:42 pm
Estoy Trabajando con "VB .NET 2008", y la aplicación que desarrolle trabaja perfectamente en cualquier PC pero existe una con la que no trabajan los Querys =S.

El problema es cuando el query intenta recoger registros de la BD, suponiendo:
"select * from tabla limit 0;"   <-- No trairia ningun registro y la aplicacion corre normal.
"select * from tabla limit 1;"   <-- Aqui si trae un registro y manda el error.

El error en sí no me dice mucho mas que:
"Error, intento de leer o escribir en la memoria protegida. a menudo esto indica que hay otra memoria dañada".

Probe la BD y la Conexión y nada indica que este algo mal, ademas, instale desde cero el framework y tampoco nada. Y no creo que este haciendo algo mal puesto que esto lo he hecho exactamente igual que cuando lo instalo en otras PCs.

No se si sirva pero el query me devuelve un datatable a traves de una función, y el resultado lo asigno a una variable para trabajar con ella.
"Datos = ExecuteTable(Query)"

Las caracteristicas de la PC donde NO trabaja son:
Win XP SP3
FrameWork 3.5 SP1
Intel Pentium D.
2GB RAM
200 DD.
(Lo simpatico es que lo he instalado en peores y mejores PCs que esta).

Si a alguien le ha pasado y lo a solucionado le agradeceria infinitamente su respuesta, y si no les ha pasado, igualmente les agradeceria infinitamente si me dieran algunas pistas pq ya he agotado todas las mias.


Título: Re: Error Simpatico!
Publicado por: Hadess_inf en 19 Noviembre 2009, 19:21 pm
trabajas con MySql?


Título: Re: Error Simpatico!
Publicado por: Cesar_Fdo en 19 Noviembre 2009, 19:25 pm
Si, y para hacer la conexion uso:
- MySQL Connector ODBC (http://dev.mysql.com/downloads/connector/odbc/5.1.html)
- MySQLDriverCS (http://sourceforge.net/projects/mysqldrivercs/)

Un ejemplo del codigo que uso:
Código:
'Imports
Imports System.Data
Imports System.Data.Odbc
Imports System
Imports System.IO

'Definimos los datos de Acceso a la Base da Datos
    Public Const DBUser As String = "root"
    Public Const DBPass As String = "N0t4r1A2I"
    Public Const DBServer As String = "localhost"
    Public Const DBName As String = "notaria21"
    Public Const DBDSN As String = "MySQL"
    Public Const DBPort As String = "3306"
    Public Const DBDriver As String = "MySQL ODBC 5.1 Driver"

    'Var que contiene la cadena de conexión a la base de datos
    Public CnxStr As String = "DRIVER=" & DBDriver & "; SERVER=" & DBServer & ";
                             DATABASE=" & DBName & "; DSN=" & DBDSN & ";
                             UID=" & DBUser & "; PWD=" & DBPass & "; PORT=" & DBPort & ""

 'Esta funcion ejecuta una consulta y regresa un DataTable
    Public Function
         ExecuteTable(ByVal Query As String) As DataTable
        Dim dtDatos As New DataTable
        Dim OdbcCmd As New OdbcCommand
        Dim Cnx As New OdbcConnection(CnxStr)
        Dim daDatos As New OdbcDataAdapter(OdbcCmd)

        OdbcCmd.Connection = Cnx
        OdbcCmd.CommandText = Query

        Try
            daDatos.Fill(dtDatos)
        Catch ex As OdbcException
            Throw New ArgumentException(ex.Message)
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try

        Return dtDatos
    End Function

'Ahora si, A ejecutar el query
   Dim Datos As New DataTable
   Dim Query as String

   Query = "Select * From usuarios Limit 1"
   Datos = ExecuteTable(Query)       'Y manda el Error... pero solo en "esa" PC.


Título: Re: Error Simpatico!
Publicado por: [D4N93R] en 6 Diciembre 2009, 23:55 pm
A ver,

Puedes describir un poco más tu escenario, es decir, la BD esta en otro equipo? o está local? en cada PC? o qué?

Las otras PC , en las que si corre, cuales son sus caracteristicas?

Una recomendación aparte:

Cuando abras una conexión, stream o lo que sea, siempre ciérrala en el finaly, ej:
        Try
            daDatos.Fill(dtDatos)
        Catch ex As OdbcException
            Throw New ArgumentException(ex.Message)
        Catch ex As Exception
            Throw New ArgumentException(ex.Message)
        End Try
        Finaly
            Cnx.Close()
        End Finaly