Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: oscarj24 en 10 Julio 2010, 01:50 am



Título: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 10 Julio 2010, 01:50 am
Hola a todos, queria preguntarles algo

he creado un sistema en vb.net que se conecta a una base de datos mysql
de un servidor web mediante ODBC.

El problema es que no consigo que el ejecutable se conecte a la DB si es que no se instala el driver ODBC en la PC donde se correra la aplicacion

Mi pregunta es: hay alguna forma de crear una referencia a ODBC... alguna dll? para no tener que instalar el ODBC driver en cada pc donde se va a ejecutar la aplicacion?...

gracias y espero me puedan ayudar

PD. Me conecto mediante una cadena de conexion, nada de DSN ya que es un problema .. saludos! ;D


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: [D4N93R] en 10 Julio 2010, 04:16 am
HINT: System.Data.Odbc (http://msdn.microsoft.com/en-us/library/system.data.odbc(v=VS.71).aspx)

O, mejor aún googlea alguna clase de conexión a MySql que deben de haber algunas por ahí!

:)


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 10 Julio 2010, 18:35 pm
Gracias por la informacion pero aun no consigo hacer lo que decia en mi post... de todas maneras vale el intento  ;D


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: 43H4FH44H45H4CH49H56H45H en 11 Julio 2010, 16:14 pm
Yo uso MySQL Connector Net 5.1.7, para hacerlo portable solo se necesita copiar MySql.Data.dll (que esta en archivos de programa\mysql\... )a la carpeta del proyecto y hacer la referencia a la misma. Asi se puede ejecutar la aplicacion en cualquier PC solo con MySql.Data.dll al lado de la aplicación y sin instalar nada más.


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 11 Julio 2010, 18:36 pm
Si he intentado eso pero con la dll del MySQL ODBC Connector que esta en Archivos de Programa/Mysql/ y eso... pero cuando intento agregar la referencia a dicha dll me aparece un mensaje de error que dice que la dll no es valida o no es del componenete de ensamblado correcto, algo asi.

Que pasaria si intentaria usar el driver que tu usas, funcionaria??


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 11 Julio 2010, 18:51 pm
Yo uso MySQL Connector Net 5.1.7, para hacerlo portable solo se necesita copiar MySql.Data.dll (que esta en archivos de programa\mysql\... )a la carpeta del proyecto y hacer la referencia a la misma. Asi se puede ejecutar la aplicacion en cualquier PC solo con MySql.Data.dll al lado de la aplicación y sin instalar nada más.

Otra consulta? como haces tu cadena de conexion con dicho driver? en mi caso con el MySQL ODBC Connector es asi:

Public con As New OdbcConnection("Driver={MySQL ODBC 5.1 Driver};Server=server.com;Database=db; User=user;Password=pass;Option=3")

como es con MySQL Connector .Net? Estoy intentado conectarme a una db remota


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: [D4N93R] en 11 Julio 2010, 20:08 pm
Pues la cadena de conexión está bien!


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 11 Julio 2010, 21:17 pm
Creo que no me entienden, lo que intento hacer es conectarme a una DB remota (ya lo he conseguido) el problema esta al hacer portable mi aplicacion ya que los drivers no se adjuntan a la aplicacion y, por lo tanto, no logro conexion.

Utilizo MySQL ODBC Driver pero al hacer referencia a la DLL de dicho driver para que el proyecto se ejecute siempre sin problemas, no me lo permite ya que el visual dice que no es una dll valida

Por lo tanto, opte por usar el ODBC .NET y si me permitio hacer una referencia a "Microsoft.Data.Odbc.dll" pero solo permite conexiones ADO, Oracle, y SQL Server pero MySQL creo que no.

Y nose que mas hacer para que funcione  ;D
Espero haberme explicado bien, saludos


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: 43H4FH44H45H4CH49H56H45H en 11 Julio 2010, 21:19 pm
Otra consulta? como haces tu cadena de conexion con dicho driver? en mi caso con el MySQL ODBC Connector es asi:

Public con As New OdbcConnection("Driver={MySQL ODBC 5.1 Driver};Server=server.com;Database=db; User=user;Password=pass;Option=3")

como es con MySQL Connector .Net? Estoy intentado conectarme a una db remota

un ejemplo simple en C#:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using MySql.Data.MySqlClient;
  10.  
  11. namespace SampleMySql
  12. {
  13.    public partial class Form1 : Form
  14.    {
  15.        public Form1()
  16.        {
  17.            InitializeComponent();
  18.        }
  19.  
  20.        private void button1_Click(object sender, EventArgs e)
  21.        {
  22.            MySqlConnection Conexion = new MySqlConnection("Database=mysql; Data Source=localhost; User Id=root; Password=mypass;");
  23.            Conexion.Open();
  24.            MySqlCommand ComandoSelect = new MySqlCommand("Select * from db");
  25.  
  26.            ComandoSelect.Connection = Conexion;
  27.  
  28.            MySqlDataReader Resultado;
  29.            Resultado = ComandoSelect.ExecuteReader();
  30.            MySqlDataReader ResultadoScema = Resultado;
  31.            while (ResultadoScema.Read())
  32.            {
  33.                listBox1.Items.Add(ResultadoScema.GetString(3));
  34.            }
  35.            ResultadoScema.Close();
  36.        }
  37.    }
  38. }
  39.  

Esta es la que uso:

http://dev.mysql.com/downloads/connector/net/5.1.html

Y funciona remotamente o localmente (da igual).


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 12 Julio 2010, 00:34 am
Bueno, ya lo logre y te explico... las cosas no eran "tan faciles" en realidad si pero ya vi el camino adecuado.. es asi:

En VB.net
- Descargar MySQL Connector .Net
- Agregar una referencia a MySQL.Data.dll
- Luego hacer un import
Código
  1.  Imports MySql.Data.MySqlClient
- Y por ultimo, en la cadena de conexion, en vez de usar el nombre del server,
  colocar la IP
Código
  1.  Public con As New MySqlConnection "server=LA_IP_DEL_SERVER;uid=username;pwd=password;database=tuDB")

Todo esto permite conectarte a una DB remota (como en mi caso: una DB MySQL en un servidor web, administrado por PhpMyAdmin) sin necesidad de estar instalando drivers en la pc donde se va a ejecutar la aplicacion ya que la dll siempre se adjunta a nuestro aplicativo ;)

Por ese lado todo aclarado, pero ahora sigo con otra duda:
como puedo hacer para que mi aplicacion sea lo mas "portable" posible?
por mi, me gustaria no tener que usar un framework asi como muchas aplicaciones
comerciales pero.. es esto posible?

me imagino que no ya que la aplicacion depende de .net pero habra alguna forma de capturar las dependecias de la aplicacion con el framework para que cuando se corra en otra pc no tenga necesidad de instalar el .net framework 3.5 por completo??  ::) espero sugerencias, saludos!


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: 43H4FH44H45H4CH49H56H45H en 12 Julio 2010, 01:01 am
La explicación que intentas darme es igual a la que sugeri desde el comienzo. Por tanto seria bueno si colocas la misma al comienzo del hilo para guiar a los usuarios que no lo sepan y asi no tengan que leer todo el post.

Existen herramientas para evitar instalar el net framework y si mal no recuerdo añadian a tu aplicación 20Mb para hacerla portable, eso en google lo encuentras porque yo nunca la use.

Si quieres hacer tu aplicación muy portable tendrias que cambiar de lenguaje C++ por ejemplo con QT, podrias llegar a tener 1 solo ejecutable sin dependencias y multiplataforma.


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: oscarj24 en 12 Julio 2010, 01:30 am
Si amigo, lo siento te mereces los creditos, tu diste con la solucion y gracias, solo quiser hacer un "Resumen" pero no pasa nada  ;-)

Bueno, leyendo tu post queria saber como puedo buscar en google eso de adjuntar el framework? ya que no tengo idea si se trata de alguna tecnologia en especial o que se yo

Por otro lado eso que mencionas de QT, si te entendi bien, permitiria transformar vb.net a un portable?.. estuve leyendo un poco sobre QT pero me he enredado mas.. saludos! y gracias

La explicación que intentas darme es igual a la que sugeri desde el comienzo. Por tanto seria bueno si colocas la misma al comienzo del hilo para guiar a los usuarios que no lo sepan y asi no tengan que leer todo el post.

Existen herramientas para evitar instalar el net framework y si mal no recuerdo añadian a tu aplicación 20Mb para hacerla portable, eso en google lo encuentras porque yo nunca la use.

Si quieres hacer tu aplicación muy portable tendrias que cambiar de lenguaje C++ por ejemplo con QT, podrias llegar a tener 1 solo ejecutable sin dependencias y multiplataforma.


Título: Re: [Ayuda] Sistema en VB.Net
Publicado por: 43H4FH44H45H4CH49H56H45H en 12 Julio 2010, 02:58 am
Para empezar puedes ver esto:

http://foro.elhacker.net/net/tutorial_como_abrir_tu_aplicacion_net_sin_net_framework_instalado-t222613.0.html;msg1075272

Respecto a QT, tendrias que volver a codificar tu aplicación en lenguaje C++ con QT (QT Creator + Visual C++ por ejemplo), osea empezar de 0, pero si estas acostumbrado a VB.NET no te lo recomiendo, porque tendrias que hacer mucho mas esfuerzo y le dedicarias mas tiempo para crear esa aplicación.