Pedir las ODBC en un servidor web

Urien

Pues si por ejemplo kiero hacer una pagina para registrar kuentas de usuario y para ello utilizo (obviamente) una base de datos... ¿como pido una ODBC al servidor? ¿hay algun programa ke te las creen si tener ke kontactar con ellos para pedirselas?
Tanto si tengo un server gratuito como si no lo tengo tendre ke solicitar las ODBC a kien me da el hosting ¿no?

aer si me podeis exar un cable >_<

cabron

:?

No se si eres tú o yo, pero uno de los dos está tremendamente equivocado xD

ODBC es una interfaz para acceder a una base de datos sin necesitad de conocer a que gestor de bases de datos te conectas ni que lenguaje utiliza.

Para usarlo tanto el sistema gestor de base de datos como el lenguaje de programación que uses deben soportar ODBC.

Urien

claro pero tu tienes ke krear una ODBC para kada base de datos con la ke vas a trabajar. Tu envias datos a la ODBC no al servidor directamente... la ODBC es la ke se encarga de "entender" eso ke le mandaste para ke el servidor ke sea lo gestione. Entonces si yo tengo una BD y kiero krear una web con un formulario ke me añada datos en una BD tengo ke crear una ODBC pero en el servidor... y el servidor no es mio, es de iespana o kien sea. Me entiendes? xD

IS4kO

Creo que te has hecho un pequeño lio, o yo no te he entendido.

Cuando vas a acceder a una base de datos vía ODBC no necesitas crear en el servidor ningun origen de datos. Ya que se supone que el servidor tiene instalado el ODBC con los distintos drivers para los distintos tipos de Bases de datos.

Es decir tu server tiene instalado Los distintos ODBC's para las distintas bases de datos, y dependendiendo del lenguaje de programación que uses tendras que especificar de una manera u otra el driver que vas a usar.

Mini ejemplo en .Net:

En mi server tengo los drivers instalados de ODBC para SQL.

pues si quisiera especificar el origen para mis Bases de Datos, para crearme una conexión, un comando o lo que fuera, en SQL usaria:

System.Data.SqlClient

Si mi base de datos fuera Oracle pues:

System.Data.OracleClient

Pero esto es una referencia, es decir, no me creo una ODBC nueva en el servidor para acceder a la base de datos, como creo que tu quieres decir.

Deathtime

Lo unico que debes averiguar es el tipo de base de datos que tiene el servidor instalado. Puede ser mysql, access etc.

Una vez "resuelto" esto, puedes empezar por crear una conexion desde tu página web como prefieras (asp, jsp, php)

Solo recuerda que las conexiones son especificas por cada base de datos, y por cada lenguaje que uses, no por cada servidor. Aqui el servidor pinta poco ( el solo recibe y manda lo que tu le pides).

No te hace falta saber nada más. Para las cadenas de conexion busca por el google que ahi suelen venir bastante bien explicadas.

Urien

#4 necesito crear una DNS de sistema dentro de esa ODBC del servidor, se de sobra ke el Origen de datos ODBC esta en todo servidor pero lo ke no se es como acceder a las DNS de sistema para crearme una ke gestione mi BD. Aki te dejo una web de hosting ke tiene un panel de control para hacerlo.
http://www.chilered.com/ayuda/dsn.shtml
Cuando me refiero a pedir una ODBC me refiero a pedir una DNS de sistema (ke esta dentro del Origen de datos ODBC).

#5 eso es inviable, si cambio a un server ke rule con otro gestor de BD's tengo ke kambiar toda la programacion de la web, las ODBC's se crearon para eso.

Abreu

Simplemente tienes que crear un DNS con el asistente que nos has enseñado: http://www.chilered.com/ayuda/pics/nt_dsn1.gif

Si tu compañia de hosting lo ofrece pero no tiene asistente les dices que te creen uno a mano y que te envien el nombre que le han dado al DNS.

Despues para hacer las conexiones tienes que usar este nombre de DNS para conectarte. En PHP sería:

$conexion = odbc_connect("nombreDNS","usuario","password");
odbc_exec($conexion,"SELECT * FROM nombreTabla");

Deathtime

Como dije antes, no te hace falta saber mas que el tipo de base de datos.

Hay 2 tipos de conexiones DSN, las de fichero: que se crean en la página (Tienes que configurar todos los parametros de la conexion) y las del sistema : dices que DSN tienen que usar en cada equipo y configurarlo en cada uno de ellos, un coñazo.

Esto se aplica a todos los lenguajes.

http://www.4guysfromrolla.com/webtech/042599-1.shtml

ahi tienes una web (en ingles) que explica los dos metodos a ser usados con ASP.

Spero que te sirva de ayuda

Edit:

encontre esto por el disco duro perdido hecho en php que conecta a una base de datos mysql.

<? //Conexion con la base
mysql_connect("servidor","usuario","password");

//Ejecutamos la sentencia SQL
$result=mysql_db_query("agenda","SELECT * FROM amigos");
?>

<? //Mostramos los registros
while ($row=mysql_fetch_array($result))
{
echo '<tr><td>'.$row["Nombre"].'</td>';
echo '<td>'.$row["Direccion"].'</td>';
echo '<td>'.$row["Telefono"].'</td>';
echo '<td>'.$row["email"].'</td></tr>';
}
mysql_free_result($result)
?>

Urien

#8 pero es ke todo eso no me sirve de nada!!!! yo no manejo programas en los ke pueda especificar el tipo de base de datos ke uso... yo hago WEBS y por ello si hosteo una en un host ke usa una BD y luego tengo ke kambiar a otro host por lo ke sea (algo muy muy muy habitual) tengo ke kambiar la programacion de la web cada vez ke tenga un problema de cambio de host.

Thanat0s

¿Y en que lenguaje haces webs?

Deathtime

Urien ........... ¿quien esta hablando aqui de programas?.....Estamos hablando ASP, JSP, PHP, y eso querido amigo, son páginas web.

El tema es que no por hacerlo con odbc siempre va a ser el mismo codigo, recuerda que tienes muchas mas JDBC, JET, OLEDB, y una infinidad más de drivers.

Y como bien dices tu si haces un codigo para una base de datos y cambias luego a otra base de datos, SIEMPRE pero es que SIEMPRE te toca modificar el codigo para arreglar los problemas que surgen con la nueva, ya sea conexión o tipologia de variables que una base de datos acepta.

PD: Intenta decirnos que lenguaje y que base de datos tiene tu servidor si es que lo consigues averiguar.

Urien

vamos a ver... mi BD es access (paso de ke me digais usa tal o usa kual, no es la cuestion) y yo creo una web para access pero atraves de una ODBC ke, obviamente, usa un driver para access... Yo me creo mi DNS de sistema para ke la coja pero claro en el Internet Information Server no en un servidor gratuito o de pago.

Mi pagina esta hecha en HTML pero uso ASP para conectar con la ODBC. Os pongo el codigo.

<%@language="VBScript"%>
<% Dim Conexion, rsCatalogo
Set Conexion=Server.CreateObject("ADODB.Connection")
Conexion.ConnectionString="DSN=PortalODBC"
Conexion.Mode=1
Conexion.Open
Set rsCatalogo=Server.CreateObject("ADODB.RecordSet")
rsCatalogo.Cursortype=0
rsCatalogo.Locktype=3
rsCatalogo.Open "Select * From Catalogo", Conexion%>

Tengo una DNS de sistema llamada "PortalODBC" con la ke konecto para ke el server me gestione la BD.
En resumen, para usar una BD necesito una DNS de sistema ke se crea con el Origen de datos ODBC ke TODOS los servidores tienen... mi problema es ke NO SE ACCEDER A CREAR ESA DNS DE SISTEMA. Hay ke crearla y no hay mas porke no voy a especificar una BD para cambiar toda la programacion si unos usan MySQL y otros usan Access. Puede ke siempre haya ke tokarla pero la diferencia de tokar unas lineas a tocarlas todas es considerable ¿no crees?.

Hay milles de webs ke usan BD's ¿como es posible ke lo ke yo pida sea tan complikado? simplemente dudo ke tenga ke ponerme en contacto con kien me hostea un servidor para desde el mismo servidor me cree una DNS de sistema para cada BD ke yo vaya a tener y ke no las pueda crear yo mismo de alguna forma.

Abreu

Pues si tu servidor de hosting no te facilita un panel de control para administrarlo, serán ellos los que tendran que hacerlo por ti.

Urien

#13 tu estas seguro de eso? es ke mi profesor me dijo ke habia ke kontactar con el ke te da hosting si no hay ninguna manera de hacerlo en un panel de control... ¿tienes experiencias personales al respecto o algo asi? me seria de gran ayuda

Abreu

La unica forma que se me ocurre es abrir la conexion sin crear la DNS. Pero tienes que saber donde se guarda la base de datos (lo que esta en negrita).

objDBConnection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("directorio/bd.mdb")

Deathtime

Cuando llegue esta tarde a mi casa te pasare el codigo que necesitas, ya que yo ya lo he usado en ciertas ocasiones y me funciona, y como bien dije antes no necesitas saber nada del sevidor. Yo lo he cambiado de servidor y me ha seguido funcionando etc.

P.D: Lo puso el de arriba. pero creo que el mio tiene mas cosas.

Edit:

Bueno ya estoy en casa... Aqui tienes el codigo que uso yo en las aplicaciones y te digo que funciona, ya puedes mover la base de datos a otro servidor (como es un fichero mdb) te va a seguir haciendo las cosas exactamente igual.

<%
' Creamos conexión.
Set cn = Server.CreateObject("ADODB.Connection")
' Especificamos Driver y Base de datos (debe estar en el mismo directorio, para modificar el directorio usar rutas relativas como ./ejemplo etc)
openstr = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & Server.MapPath("ejemplo.mdb")
'Abrimos conexión usando el driver.
cn.Open openstr
'Creamos un recordSet y la sentencia SQL
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM centros;"

'Abrimos el recordset pasandole como parametros la sentencia sql, la conexión y otras especificacios, para mas info sobre especificaciones (buscar ADOVBS.INC)
rs.Open sql, cn, 3, 3

'Mientras que el no lleguemos al final del fichero hacemos...
On Error Resume Next
rs.MoveFirst
Do While Not rs.EOF
Response.Write Server.htmlencode(_
rs.Fields("Codigocentro") & ", " &_
rs.Fields("Centro") & " " & _
rs.Fields("Adreca")) & " "
rs.Fields("Localitat") & " " & _
rs.Fields("Cpostal") & " " & _
rs.Fields("telef") & "<br>"
rs.MoveNext
Loop
' Se destruyen los objetos creados
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>

A ver si esto te sirve de ayuda..

Urien

muchas gracias, el lunes te digo si me ha servido de algo ya ke antes no puedo probarlo. Un saludo y muchas gracias otra vez.

Usuarios habituales

  • Urien
  • Deathtime
  • Abreu
  • Thanat0s
  • IS4kO
  • cabron